python学习之旅【第一篇】简介和入门
python简介:
一、什么是python
pythonde 设计哲学是:“优雅”、“明确”、“简单”
二、python由来
1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者。
三、Python能做什么
Web程序
Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。使用Python语言编写的Gunicorn作为Web服务器,也能够运行Python语言编写的Web程序。Python定义了WSGI(Web Server Gateway Interface)标准应用接口来协调Http服务器与基于Python的Web程序之间的沟通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可以让程序员轻松地开发和管理复杂的Web程序。
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络蠕虫。第三方库Twisted支持异步在线编写程序和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。另有gevent这个流行的第三方库,同样能够支持高性能高并发的网络开发。
GUI开发
Python本身包含的Tkinter库能够支持简单的GUI(Graphical User Interface)开发。但是越来越多的Python程序员选择wxPython或者PyQt等GUI包来开发跨平台的桌面软件。使用它们开发的桌面软件运行速度快,与用户的桌面环境相契合。通过PyInstaller还能将程序发布为独立的安装程序包。
操作系统
在很多操作系统里,Python是标准的系统组件。大多数Linux发布版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端机下直接运行Python。有一些Linux发布版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器、Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用作业系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。
其他
NumPy、SciPy、Matplotlib可以让Python程序员编写科学计算程序。有些公司会使用Scons代替make构建C++程序。
很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。很多游戏,如EVE Online使用Python来处理游戏中繁多的逻辑。
YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。OLPC的作业系统Sugar项目的大多数软件都是使用Python编写
所以他的应用范围大概分为:
数据分析
系统编程
组件集成
网络服务
图像处理
数值计算和科学计算
四、Python之禅
1.优美胜于丑陋(Python 以编写优美的代码为目标)
2.明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
3.简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
4.复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁,多加注释!)
5.扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
6.间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题,一行代码不能超过80个字符,你可以换行或起一个新的逻辑来写)
7.可读性很重要(优美的代码是可读的)
8.即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上),觉对不允许特列必须按照这个规则
9.不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
10.当存在多种可能,不要尝试去猜测!
11.而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
12.虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
13.做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
14.如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
15.命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召
编程风格
五、语法要求:
-缩进统一
同一级别的代码必须一致(并且建议所有级别的代码的缩进建议是相同的--必须,开发规范里建议4个空格)
python,第一行一定要顶在行头!同级别的新的都要顶在行头
二、变量:
标识符的第一字符必须是字母表中的字母(大写或小写)或一个下划线(‘-’)
标识符名称的其他部分可以由字母、下划线或者数字(0-9)组成,
有效的标识符例子:_my_name、name_23、a1b2_c3、
无效标识符名称例子:2things、this is spaced out和my—name。
标识符名称是对大小写敏感的,例如,myname和myName不是一个标识符。
常量:数值不变的
变量:数值会变动的量
在python中没有常量的,所有的数值都可以改变,但是他依然有个常量的概念,
##这里需要注意下,设置变量的时候不能设置python自带的内置方法比如type:
以下关键字不能声明变量名:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
定义方式:
age_of_oldboy = 80
number_of_studens = 90
定义变量名不好的方式:
1、变量名为中文,拼音
2、变量名过长
3、变量名词不达意
定义变量会有:id,type,value
#1 等号比较的是value,
#2 is比较的是id
#强调:
#1. id相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x='Info Egon:18'
>>> y='Info Egon:18'
>>> id(x)
4376607152
>>> id(y)
4376607408
>>>
>>> x == y
True
>>> x is y
False
六、用户与程序交互:
#在python3中
input:用户输入任何值,都存成字符串类型
#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input
七、注释:
一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这会挨打的,所以避免这种尴尬的事情发生,一定要增加你代码的可读性。
代码注释分单行注释好多行注释,单号注释用#,多行注释可以用三对双引号:“”““””
代码注释的原则:
#1、不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可,
#2、注释可以用中文或英文,但不要用拼音。
文件头:
#! /usr/bin/env python
# _*_ coding: utf-8 _*_
八、基本数据类型:
#数据即变量的值,如name= 'xiaoliu',xiaoliu则是我们保存的数据。变量是用来反映、保持状态以及状态变化的,毫无疑问针对不同的的状态就应该用不同类型的数据去标识。
数字:
# int整型
定义:age = 10 # age = int(10)
用于标识:年龄,等级,身份证号,qq号,个数
#float浮点型
定义:salary = 3.1 #salary = folat(3.1)
用于标识:工资,身高,体重
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
#long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
>>> a= 2**64
>>> type(a) #type()是查看数据类型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>
#complex复数型
>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0
字符串:
#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
#定义:name = 'egon' #name=str('egon')
#用于标识:描述性的内容,如姓名,性别,国籍,种族
#那单引号和双引号,多引号有什么区别呢,其实单双引号没有任何区别,只有下面这种情况 你需要考虑单双的配合。
msg = "my name is egon,I'm 18 years old!"
#多引号有什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗
歌颂我的同桌
你看他那乌黑的短发
好像一只炸毛鸡'''
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#数字可以进行加减乘除等运算,字符串呢?其实字符串也能,但只能进行相加和相乘运算。
name = 'egon'
age = '18'
name + age #相加其实就是简单拼接
'egon18'
name*5
'egonegonegonegonegon'
#注意1:字符串相加的效率不高
字符串1 + 字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当于字符串与字符串3的空间被复制了一次
#注意2 :只能字符串加字符串,不能字符串加其他的类型。
列表:
#在[]内用逗号隔开,可以存放n个任意类型的值
定义:students = ['egon','ales','wupeiqi']
#students = list(['egon','alex','wupeqi'])
用于标识:储存多个值的情况,比如一个人有多个爱好
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#存放多个学生的信息:姓名,年龄,爱好
students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
print(students_info[0][2][0]),#取出第一个学生的第一个爱好
字典:
#何为字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下:
info= ['egon','male',18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
info[2]
18
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄。
即:
#name,sex,age
info = ['egon','male',]
而这完全只是一种假设,并没有什么真正的意义上规定第桑位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key = value,
这就用到了字典。
# 在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意数字类型
定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地去取值。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
ingo = {
'name':'egon',
'hobbies':['play','sleep'],
'company_info':{
'name':'oldboy',
'type':'education',
'emp_num':40,
}
}
print(info['company_info']['name']) #取公司名
students = [
{'name': 'alex', 'age': 38, 'hobbies': ['play', 'sleep']},
{'name': 'egon', 'age': 18, 'hobbies': ['read', 'sleep']},
{'name': 'wupeiqi', 'age': 58, 'hobbies': ['music', 'read', 'sleep']},
]
print(students[1]['hobbies'][1]),#取第二个学生的第二个爱好
布尔值:
布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True
接下来就可以根据条件结果来干不同的事情了:
if a > b
print(a is bigger than b )
else
print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
布尔类型的重点知识!!!
1、none,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、 其余均为真。
重点:
#1、可变类型:在id不变的情况下,value可以变,则称为可变类型:如列表,字典
#2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间
格式化输出:
占位符,如:%s %d
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('egon',18))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('egon',18))
print('My name is %s,my age is %d' %('egon','18')) #报错
#接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d
print('My name is %s,my age is %s' %(name,age))
#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
基本运算符:
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算。
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
#三者的优先级从高到底分别是:not,and,or
3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3
False
#最好使用括号来区别优先级,其实意义与上面的一样
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False
身份运算:
#is比较的是id
#而==比较的是值
九、流程控制之if....else:
我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序有相应的机制去模拟,人脑无非是数学运算和逻辑运算:
#如果:女人的年龄 > 30岁,那么:叫阿姨
age_of_girl = 31
if age_of_girl > 30:
print('阿姨好')
#如果:女人的年龄 > 30岁,那么:叫阿姨,否则:叫小姐
age_of_girl = 29
if age_of_girl > 30:
print('阿姨好')
else:
print('小姐好')
# 如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨
age_of_girl=18
height=171
weight=99
is_pretty=True
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100:
print('表白')
else:
print('阿姨好')
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
age_of_girl=18
height=171
weight=99
is_pretty=True
success=False
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
if success:
print('表白成功,在一起')
else:
print('不相信爱情了')
else:
print('阿姨好')
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
score = input('>>>')
score = int(score)
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
else:
if 条件1:
缩进的代码块
elif 条件2:
缩进的代码块
elif 条件3:
缩进的代码块
......
else:
缩进的代码块
name=input('请输入用户名字:')
password=input('请输入密码:')
if name == 'egon' and password == '123':
print('egon login success')
else:
print('用户名或密码错误')
#!/usr/bin/env python
#根据用户输入内容打印其权限
'''
egon --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
name=input('请输入用户名字:')
if name == 'egon':
print('超级管理员')
elif name == 'tom':
print('普通管理员')
elif name == 'jack' or name == 'rain':
print('业务主管')
else:
print('普通用户')
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 如果:今天是Monday,那么:上班
# 如果:今天是Tuesday,那么:上班
# 如果:今天是Wednesday,那么:上班
# 如果:今天是Thursday,那么:上班
# 如果:今天是Friday,那么:上班
# 如果:今天是Saturday,那么:出去浪
# 如果:今天是Sunday,那么:出去浪
#方式一:
today=input('>>: ')
if today == 'Monday':
print('上班')
elif today == 'Tuesday':
print('上班')
elif today == 'Wednesday':
print('上班')
elif today == 'Thursday':
print('上班')
elif today == 'Friday':
print('上班')
elif today == 'Saturday':
print('出去浪')
elif today == 'Sunday':
print('出去浪')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
#方式二:
today=input('>>: ')
if today == 'Saturday' or today == 'Sunday':
print('出去浪')
elif today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' \
or today == 'Thursday' or today == 'Friday':
print('上班')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
#方式三:
today=input('>>: ')
if today in ['Saturday','Sunday']:
print('出去浪')
elif today in ['Monday','Tuesday','Wednesday','Thursday','Friday']:
print('上班')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
十、条件循环while:
while条件:
# 循环体
# 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判
断条件。。。
# 如果条件为假,那么循环体不执行,循环终止
#打印0-10
count=0
while count <= 10:
print('loop',count)
count+=1
#打印0-10之间的偶数
count=0
while count <= 10:
if count%2 == 0:
print('loop',count)
count+=1
#打印0-10之间的奇数
count=0
while count <= 10:
if count%2 == 1:
print('loop',count)
count+=1
死循环
import time num=0 while True: print('count',num) time.sleep(1) num+=1
循环嵌套与tag
tag=True while tag: ...... while tag: ........ while tag: tag=False
案列:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 循环验证用户输入的用户名与密码 2 认证通过后,运行用户重复执行命令 3 当用户输入命令为quit时,则退出整个程序 #实现一 name = 'egon' password = '123' indd = 0 dd = 0 while indd < 3: inp_name = input('请输入用户名:') inp_pwd = input('请输入密码:') indd += 1 if inp_name == name and inp_pwd == password: while dd < 5: cmd = input('>>>') dd += 1 if not cmd: continue if cmd == 'quit': break print('run <%s>' %cmd) else: print('用户名或密码错误') continue print('你真的太笨了!')
break与continue
#break用于退出本层循环 while True: print "123" break print "456" #continue用于退出本次循环,继续下一次循环 while True: print "123" continue print "456"
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句,while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句 count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------") 输出 Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 循环正常执行完啦 -----out of while loop ------ #如果执行过程中被break啦,就不会执行else的语句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------") 输出 Loop 1 Loop 2 -----out of while loop ------ 复制代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#1. 使用while循环输出1 2 3 4 5 6 8 9 10 #题一 count=1 while count <= 10: if count == 7: count+=1 continue print(count) count+=1 count=1 while count <= 10: if count != 7: print(count) count+=1 #2. 求1-100的所有数的和 #题目二 res=0 count=1 while count <= 100: res+=count count+=1 print(res) #3. 输出 1-100 内的所有奇数 #题目三 count=1 while count <= 100: if count%2 != 0: print(count) count+=1 #4. 输出 1-100 内的所有偶数 #题目四 count=1 while count <= 100: if count%2 == 0: print(count) count+=1 #5. 求1-2+3-4+5 ... 99的所有数的和 #题目五 res=0 count=1 while count <= 5: if count%2 == 0: res-=count else: res+=count count+=1 print(res) #6. 用户登陆(三次机会重试) #题目六 count=0 while count < 3: name=input('请输入用户名:') password=input('请输入密码:') if name == 'egon' and password == '123': print('login success') break else: print('用户名或者密码错误') count+=1 #7:猜年龄游戏 要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出 #题目七 age_of_oldboy=73 count=0 while count < 3: guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1 #8:猜年龄游戏升级版 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如何猜对了,就直接退出 #题目八 age_of_oldboy=73 count=0 while True: if count == 3: choice=input('继续(Y/N?)>>: ') if choice == 'Y' or choice == 'y': count=0 else: break guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1 复制代码
十一、流程控制之for循环
1 迭代式循环:for,语法如下
for i in range(10):
缩进的代码块
2 break与continue(同上)
3 循环嵌套
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#分析
'''
#max_level=5
* #current_level=1,空格数=4,*号数=1
*** #current_level=2,空格数=3,*号数=3
***** #current_level=3,空格数=2,*号数=5
******* #current_level=4,空格数=1,*号数=7
********* #current_level=5,空格数=0,*号数=9
#数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
#实现
max_level=5
for current_level in range(1,max_level+1):
for i in range(max_level-current_level):
print(' ',end='') #在一行中连续打印多个空格
for j in range(2*current_level-1):
print('*',end='') #在一行中连续打印多个空格
print()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 升级需求:
#
# 可以支持多个用户登录 (提示,通过列表存多个账户信息)
# 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
#账号和密码的注册
zxc = {}
name = input('请创建用户名:')
word = input('请创建密码:')
zxc[name] = word
with open('db.txt','a',encoding='utf-8') as f:
lock_users = f.write('%s\n' %(zxc))
print('恭喜您,注册成功!!')
count = 1
while 1:
#登录账号和密码,三次机会
username = input('请输入您的用户名:')
password = input('请输入您的密码:')
with open('db.txt','r',encoding='utf-8') as f:
na_pa = f.read()
if username in na_pa:
if password in na_pa:
print('恭喜您登录成功:')
break
else:
print('用户名或密码输入错误,请重新输入!!1')
if count == 3:
with open('db.txt', 'a',encoding='utf-8') as f:
f.write('%s%s' %(zxc,'此账户已被锁定!!'))
print('此账户已被锁定')
ase = input('是否解锁,Y或N').upper()
if ase == 'Y':
count = 0
else:
print('您个大笨蛋!!')
break
count += 1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = 'egon'
password = '123'
indd = 0
dd = 0
while indd < 3:
inp_name = input('请输入用户名:')
inp_pwd = input('请输入密码:')
indd += 1
if inp_name == name and inp_pwd == password:
while dd < 5:
cmd = input('>>>')
dd += 1
if not cmd:
continue
if cmd == 'quit':
break
print('run <%s>' %cmd)
else:
print('用户名或密码错误')
continue
print('你真的太笨了!')
十二、开发工具IDE
1 为何要用IDE
到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件、写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率。
很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 开发IDE
2 安装
下载地址:https://www.jetbrains.com/pycharm/download 选择Professional 专业版
Comunnity社区版是免费的,但支持的功能不多,比如以后我们会学的Django就不支持,所以还是用专业版,但专业版是收费的,一年一千多,不便宜。唉,万能的淘宝。。。不宜再多说啦。
注册完成后启动,会让你先创建一个项目,其实就是一个文件夹,我们以后的代码都存在这里面
3 创建目录
你以后写的项目可能有成百上千个代码文件 ,全放在一起可不好,所以一般把同样功能的代码放在一个目录,我们现在以天为单位,为每天的学习创建一个目录day1,day2,day3...这样
4 创建代码文件
5 执行代码