Python while循环满足条件仍不终止?密码三次重试功能异常排查
错误根源
你当前的循环条件使用了逻辑或or,完全不符合预期的循环触发规则:
- 逻辑或的规则是只要任意一个条件成立,整体表达式就返回真,你当前的条件
guess != password or tries != 3意味着:- 就算你输入了正确密码,
guess != password为假,但只要尝试次数还没到3次,tries != 3为真,循环还会继续运行 - 就算你已经尝试了3次,只要最后一次输入的密码不对,
guess != password为真,循环还是不会终止
- 就算你输入了正确密码,
你需要的循环触发逻辑应该是:密码输入错误 并且 尝试次数还没到3次的时候才继续循环,所以把or替换成逻辑与and即可。
修正后的可运行代码
password = "password" guess = "" tries = 0 # 把or换成and即可修复循环终止问题 while guess != password and tries != 3: guess = input("Password: ") tries += 1 print(f"{abs(tries - 3)} Tries Remaining.") # 可选补充:循环结束后给出明确的结果提示 if guess == password: print("密码正确,登录成功") else: print("尝试次数过多,访问已锁定")
内容的提问来源于stack exchange,提问作者Banana Jotaro
相关产品推荐
相关产品推荐

