学习资料来源:博客园 金角大王
2018.7.22
1、用户输入,并打印输出
1 username=input("username:") 2 password=input("password:") 3 print(username,password)
备注:有种大学学习C语言的即视感,先输入XXX,后执行XXX...
2、格式化输出
(1)、 '''+变量+'''的方式实现
1 name=input("name:") 2 age=input("age:") 3 job=input("job:") 4 salary=input("salary:") 5 6 info=''' 7 ------ info of '''+name+'''------- 8 Name:'''+name+''' 9 Age:'''+age+''' 10 Job:'''+job+''' 11 Salary:'''+salary+''' 12 ''' 13 print(info)
优缺点:开启多个内存空间,效率底下,尽量少用
(2)、%s的方式
name=input("name:") age=input("age:") job=input("job:") salary=input("salary:") info=''' ---------info of %s--------- Name:%s Age:%s Job:%s Salary:%s '''%(name,name,age,job,salary) print(info)
备注:
1、%s为占位符,其中s代表string,%(name,name,age,job,salary)必须与占位符的个数相同,否则会报错
2、%d,d代表只能是数字,不是数字类型则会报错,用于检测数据类型;
3、%f,f代表是浮点
问题 :使用%d时,需注意,input默认的时string,即使输入的是数字
1 age=input("age:") 2 print(type(age))
问题结果:
1 age:30 2 <class 'str'>
解决:强至转换数据类型
1 age=input("age:") 2 age=int(age)#强制转换成数据类型,str->int 3 print(type(age))
结果:
1 age:30 2 <class 'int'>
方法2的可调整为
1 name=input("name:") 2 age=input("age:") 3 age=int(age)#强制转换成数据类型,str->int 4 job=input("job:") 5 salary=input("salary:") 6 7 info=''' 8 ---------info of %s--------- 9 Name:%s 10 Age:%d 11 Job:%s 12 Salary:%s 13 '''%(name,name,age,job,salary) 14 print(info)
备注:age只能输入整数,输入小数则会出现无法执行数据类型转换
(3)、{变量}的方式实现
1 name=input("name:") 2 age=input("age:") 3 job=input("job:") 4 salary=input("salary:") 5 6 info=''' 7 ---------info of {_name}--------- 8 Name:{_name} 9 Age:{_age} 10 Job:{_job} 11 Salary:{_salary} 12 '''.format(_name=name, 13 _age=age, 14 _job=job, 15 _salary=salary) 16 print(info)
备注:_name类似函数的定义变量的赶脚...
另一种写法
1 # Author:Shang 2 # 用户输入,格式化输出 3 name=input("name:") 4 age=input("age:") 5 job=input("job:") 6 salary=input("salary:") 7 8 info=''' 9 ---------info of {0}--------- 10 Name:{0} 11 Age:{1} 12 Job:{2} 13 Salary:{3} 14 '''.format(name,age,job,salary) 15 print(info)
备注:类似数组的方式,缺点是如果数据较多,则该方法不合适
3、密码加密显示
1 import getpass #引用标准库getpass 2 3 username=input("username:") 4 password=getpass.getpass("password:") 5 6 print(username,password)
备注:getpass在Pycharm中不好用、不好用...(什么鬼?),但是在shell中可用(为什么我在shell中也不好用呢?甚至奇怪~)
4、if elif else
_username="shang" _password="123456" username=input("username:") password=input("password:") if username !=_username: print("用户名不正确") elif password != _password: print("密码有误") else: print("欢迎回来 {name}".format(name=username))
需注意,书写是,需要有严格的格式要求
5、Game:使用if-else猜年龄
1 age_of_ace=30 2 3 guess_age=int(input("guess age:")) #比较时,不能使用str进行比较 4 5 if guess_age > age_of_ace: 6 print("think younger") 7 elif guess_age < age_of_ace: 8 print("think older") 9 else: 10 print("yes,you get it!!!")
备注:作比较时,需要需讲比较双方的数据类型转化成一致
6、while循环
要求:错误循环三次后,结束游戏;猜对之后,直接结束
1 age_of_ace=30 2 count=0 3 4 while count<3: 5 guess_age=int(input("guess age:")) #比较时,不能使用str进行比较 6 if guess_age > age_of_ace: 7 print("think younger") 8 elif guess_age < age_of_ace: 9 print("think older") 10 else: 11 print("yes,you get it!!!") 12 break 13 count += 1 14 else: 15 print("oh,no! the game is over~")
备注:while-else的用法,这个略屌,跳出while之后,进行else的流程
7、while的应用
要求:在错误3次后,确认是否需要继续,如果继续,则继续进行循环,否则停止游戏
1 age_of_ace=30 2 count=0 3 4 while count<3: 5 guess_age=int(input("guess age:")) #比较时,不能使用str进行比较 6 if guess_age > age_of_ace: 7 print("think younger") 8 elif guess_age < age_of_ace: 9 print("think older") 10 else: 11 print("yes,you get it!!!") 12 break 13 count += 1 14 if count==3: 15 result=input("do you want to try again? Y/N:") 16 if result=="Y": 17 count=0 18 else: #while跳出后,进行else 19 print("the game is over")
在最后判断是否继续,当用户选择Y时,则清空循环次数,继续进行循环;其他选择时,则结束游戏
8、for循环
语法:for i in range(3)--i从0开始,依次递增,直至i>=3为止
1 age_of_ace=30 2 3 for count in range(3): 4 guess_age=int(input("guess age:")) #比较时,不能使用str进行比较 5 if guess_age > age_of_ace: 6 print("think younger") 7 elif guess_age < age_of_ace: 8 print("think older") 9 else: 10 print("yes,you get it!!!") 11 break 12 else: 13 print("oh,no! the game is over~")
备注:当不满足条件跳出for循环后,则执行最后的else;但是当break跳出后,则不执行最后一个else
9、for的间断循环执行
每隔1个数执行一次
1 for i in range(0,10,2): 2 print("loop",i)
#执行结果 loop 0 loop 2 loop 4 loop 6 loop 8
备注:其中(0,10,2),0代表开始的数值,10代表循环的此处,2代表步幅间距
10、continue 跳出本次循环继续进行下次循环
break 跳出整个循环
1 for i in range(0,10): 2 if i<5: 3 print("loop",i) 4 else: 5 continue 6 print("continue的应用")
1 #结果 2 loop 0 3 continue的应用 4 loop 1 5 continue的应用 6 loop 2 7 continue的应用 8 loop 3 9 continue的应用 10 loop 4 11 continue的应用
备注:只打印5次,后续的打印,被continue给跳过