这章我们先来看看前面我们写的这个模拟登入QQ的代码。
username = '110119'
password = '123456'
while True:
input_username = input('请输入你的账号:')
input_password = input('请输入你的密码:')
if input_username == username and input_password:
print("登入成功")
while True:
action = input('请输入你的操作')
if action == 'xxx':
break
print(f'正在看{action}')
break
else:
print('用户名或密码错误,请注意格式大小写')
我现在有个新的需求,就是当用户输错三次账号密码的时候,我们就不让用户输入流,要实现这个功能。
首先得有一个变量保存用户输错的次数对吧,所以我们在前面先定义一个变量,num=0.
username = '110119'
password = '123456'
num = 0
while True:
input_username = input('请输入你的账号:')
input_password = input('请输入你的密码:')
现在变量定义好了,接下来就要做的就是当用户输错账号密码的时候我们就要给这个变量进行+1操作对吧。
就可以在打印‘用户名或密码错误,请注意格式大小写’后面加一行代码,num+=1。然后当用户输错三次之后,打印‘账号密码已经连续输错3次,账号已锁定’,然后结束循环。
username = '110119'
password = '123456'
num = 0
while True:
input_username = input('请输入你的账号:')
input_password = input('请输入你的密码:')
if input_username == username and input_password:
print("登入成功")
while True:
action = input('请输入你的操作')
if action == 'q':
break
print(f'正在看{action}')
break
else:
print('用户名或密码错误,请注意格式大小写')
num += 1
if num == 3:
print('账号密码已经连续输错3次,账号已锁定')
break
这样就实现了记录用户输错的次数。当然了,我们现在只是打印出了这样的效果,等我们学到了数据库之后就不单单只是打印了而是回去修改当前用户的状态,让当前用户不能再登录,这是后面才会讲的知识了。
我们现在打印看看,是不是打印的效果和我们想的一样,结果就是在三次之后退出循环,结束代码。
我们把这个功能实现了,但是又会在后面多加一个缩进,不够简洁和没美观,现在我们来看while的另一种用法。
while加else,用法很简单,就直接加在while循环整个代码块后面就行了。
和if加else类似,if判断的else所包含的代码是在if判断的条件不成立的情况下执行。而while循环的else所包含的代码,是在while循环正常结束之后,不被break打断的情况下才会执行。
我们继续优化模拟登入QQ的代码。我们先要把第四行代码改成while num <3,然后需要把num+=1下面的代码删掉,然后在外层写else代码,在else子代码块写‘账号密码输错三次,已被锁定’。
我们继续打印试试,是否和上面的代码打印效果一样,结果就是形同的效果。只是代码更简洁美观。
username = '110119'
password = '123456'
num = 0
while num < 3:
input_username = input('请输入你的账号:')
input_password = input('请输入你的密码:')
if input_username == username and input_password== password:
print("登入成功")
while True:
action = input('请输入你的操作')
if action == 'xxx':
break
print(f'正在看{action}')
break
else:
print('用户名或密码错误,请注意格式大小写')
num += 1
else:
print('账号密码输错三次,已被锁定')
未经允许不得转载:445IT之家 » Python while与else