【问题标题】:My while loop wont end when condition is met满足条件时,我的 while 循环不会结束
【发布时间】:2021-11-25 08:45:04
【问题描述】:
所以我想做的是制作一个让用户输入密码的程序。如果密码正确,或者尝试总数达到 3 次,程序应该停止......但它不会。
password = "password"
guess = ""
tries = 0
while guess != password or tries != 3:
guess = input("Password: ")
tries += 1
print(f"{abs(tries - 3)} Tries Remaining.")
【问题讨论】:
标签:
while-loop
conditional-statements
【解决方案1】:
这样写:
password = "password"
tries = 0
while True:
if tries == 3:
break
guess = input("Password: ")
if guess == password:
break
tries += 1
print(f"{abs(tries - 3)} Tries Remaining.")
【解决方案2】:
您的条件必须是逻辑 AND,而不是逻辑 OR。
while guess != password and tries != 3:
当您使用逻辑 OR 时,如果任一表达式的计算结果为 true,则 while 循环将继续。
因此使用逻辑与,当tries == 3 时,第二个表达式的计算结果为假,我们退出循环。
【解决方案3】:
while循环里面猜测是一个局部变量,所以全局变量保持不变。全局猜测始终为 '',因此条件始终为真。