Python 3:使用While循环限制密码尝试次数的问题排查
问题分析与修复方案
核心问题
- 内层
while attempt < max_attempts循环在用户输入正确密码后,未立即终止,会继续执行剩余次数的循环,导致持续提示"try again" - 密码验证逻辑嵌套混乱,外层
while correct_password与内层次数循环的逻辑冲突,无法正确终止流程
修复后的代码
login = { "alex": "dog123" } correct_user = True # 用户名验证逻辑 while correct_user: user = input("Please input your username ") if user in login: print(f'Hello {user}, please input your password.') correct_user = False else: print("Invalid user") attempt = 0 max_attempts = 3 # 密码验证逻辑整合次数控制 while attempt < max_attempts: password = input(">") if password == login[user]: # 直接匹配当前用户对应的密码,避免多用户密码重复时的误判 print(f"""Welcome back {user}! How can i help you today?""") break else: attempt += 1 if attempt < max_attempts: print("try again") else: # 循环正常结束(尝试次数用完)时执行 print("too many guesses!")
修复点说明
- 移除冗余的
correct_password标志,直接用次数循环控制流程,逻辑更简洁 - 密码验证改为匹配当前用户的专属密码,原代码用
password in passkey会匹配所有用户的密码,不符合单用户验证逻辑 - 仅在还有剩余尝试次数时提示"try again",次数耗尽直接提示超限
- 输入正确密码后立即通过
break终止循环,不会继续执行后续逻辑
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

