六.if条件语句
语法格式:
if
条件1... :(冒号结尾) #如果不满足,则执行下一条
if 条件n... :(冒号结尾) #如果不满足,则执行下一条
elif 条件n... :(冒号结尾) #如果不满足,则执行下一条
else 如果不满足条件那么就输出...
elif
条件2... :(冒号结尾) #如果不满足,则执行下一条
else :(冒号结尾)
如果不满足条件那么就输出...
例子:if条件语句
gender = 'female' age = 21 height = 170 is_beautiful = True is_successful = False if gender == 'female' and age > 18 and age <= 25 and height > 160 and is_beautiful: print('表白中...') if is_successful: print('在一起...') else: print('逗你玩呢...') else: print('阿姨好...')
练习1:用户登陆验证
name=input('pls input you name>>:') passwd=input('pls input you passwd>>:') passwd=int(passwd) #输入的数据设置为整数类型 if name == 'szq' and passwd == 666666: print('Welcome') elif name != 'szq': print('You name not exit') elif name == 'szq' and passwd != 666666: print('You passwd is error') else: print('The name does not exist')
练习2:根据用户输入的内容给出其权限
name=input('pls input you name>>:') if name == 'szq': print('超级管理员') elif name == 'wjp': print('网管') elif name == 'zyl' or name == 'wxx': print('技术专员') else: print('不存在这个人')
练习3:判断今天是周几,然后决定是出去玩还是上班
today=input('pls input today>>:') today=int(today) if today in [1,2,3,4,5]: print('好好上班,别想着出去玩') elif today in [6,7]: print('出去玩') else: print(''' 必须输入:1,2,3,4,5,6,7其中一种 ''')
注意点:if today in [1,2,3,4]: 就相当于变量today的值存在与[1,2,3,4]内。 #变量today匹配[]中括号内的任意一个值。
练习4:用户登陆接口
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
user_list={ 'ssp':{'passwd':666666,'account':0}, 'wsp':{'passwd':666666,'account':0}, 'zsp':{'passwd':666666,'account':0}, } while True: name=input('pls input you name >>:') passwd=input('pls input you passwd >>:') if name in user_list and passwd != user_list[name]['passwd']: print('用户或密码输入错误,请重新输入') user_list[name]['account'] += 1 #针对不同用户做失败次数判断,这样失败次数不会叠加,某一用户失败,其他用户不受影响 if user_list[name]['account'] > 2: #如果某一用户失败次数大于3,那么就提示用户"系统将被锁定" print('你尝试的输入的次数过多,系统已被锁定') break continue elif name in user_list and passwd == user_list[name]['passwd']: print('登陆成功') break else: print('用户名不在') exit()
练习5:登陆接口需求升级:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
前言:这里需要用到Python中文件的读取和写入功能,例:
user_list={ 'ssp':{'passwd':666666,'account':0}, 'wsp':{'passwd':666666,'account':0}, 'zsp':{'passwd':666666,'account':0}, } while True: name=input('pls input you name >>:') passwd=input('pls input you passwd >>:') passwd=int(passwd) with open('test.txt','r') as f: #打开文件"test.txt","r"表示只读,默认使用 user_land=f.read() #f.read()表示读取文件"test.txt"得内容并赋值给变量"user_land" if name in user_land: print('用户 %s 尝试登陆次数过多,已被系统锁定,无法登陆!' % (name)) break if name in user_list and passwd != user_list[name]['passwd']: print('用户或密码输入错误,请重新输入') user_list[name]['account'] += 1 if user_list[name]['account'] > 2: print('你尝试的输入的次数过多,系统已被锁定') with open('test.txt', 'w') as f: #"w"表示可写,默认使用"r"只读,可写模式下不能读文件内容 f.write(name) #要写得内容 f.close() #有打开就有关闭 break continue elif name in user_list and passwd == user_list[name]['passwd']: print('登陆成功') break else: print('用户名不在')#Python读写功能注释:
Python读写功能注释 with open('test.txt','w') as f: #打开文件"test.txt","w"表示可写,默认使用"r"只读,可写模式下不能读文件内容 f.write(name) #要写得内容 f.write(passwd) #要写得内容 f.close() #有打开就有关闭 with open('test.txt') as f: user_list=f.read() #f.read()"读取文件test.txt得内容",把值赋值给变量user_list if name in user_list: print('用户%s被锁定' %(name))
七.循环 While与for循环
7.1while 循环
7.1.1 while循环的语法(又称之为条件循环)
while 条件:
代码1
代码2
代码3
。。。。
7.1.2 while+break,break的意思是结束本层循环
7.1.2 while+continue,continue的意思是结束本次循环,进入下一次循环
while+continue练习:打印数字1-10,其中不打印数字8
n=1 while n <= 10: if n == 8: n+=1 #这里不加n+=1的话,while循环执行到n=8时,会一直循环,那么只能打印1-7,在8这个位置卡住 continue #当n=8时跳出本次循环 print(n) n+=1
练习1:循环嵌套 (while循环内再加while循环)
while True: #第1个while循环 print('第一层') while True: #第2个while循环 print('第二层') while True: #第3个while循环 cmd=input('第三层>>: ') if cmd == 'q': break #如果在第3个while循环内输入'q',则跳出本层(第3层)循环 break break
练习2:循环嵌套小技巧 while+tag #适合用于循环嵌套(即while循环中套多个while循环,3个以上循环嵌套比较适合用)
tag=True #定义变量tag=True while tag: print('第一层') while tag: print('第二层') while tag: cmd=input('第三层>>: ') if cmd == 'q': #当输入'q'命令时 tag = False #定义变量tag为False,那么本层循环结束后,所有的变量tag的值都为False,那么所有的循环都将结束 break
7.2 for循环 方便从一个数据里面取多个值出来
name='szq' for n in name: #相当于:for n in 'szq' print(n) #运行后得到如下值 s z q
这里可以看出,for循环内,对变量n依次赋值为"szq"(依次赋值为"s" "z" "q"),那么在取变量n的值的时候,就能够依次取出"s" "z" "q"多个值