Python中判断密码重试次数的if语句无法正常生效如何解决
问题原因
- 变量计数未正确赋值:你写的
number_of_attempts + 1仅为算术表达式,没有将计算结果赋值回原变量,number_of_attempts的值永远停留在初始值1,永远无法满足>3的判断条件。 - 判断逻辑位置错误:判断尝试次数是否超标的
if number_of_attempts > 3:语句放在了函数最开头,函数运行时会先执行这个判断,此时计数刚被初始化为1,永远不会触发该分支的打印逻辑。 - 缺少循环控制结构:现有代码最多仅会让用户输入2次密码,没有循环逻辑支撑多次重试和次数判定,根本达不到3次的阈值。
- 未定义依赖变量:函数内直接使用的
password没有作为参数传入,运行时会触发未定义变量报错。
修复方案
你可以参考如下修改后的代码,通过循环控制重试流程,正确维护计数变量:
def attempt_function(correct_password): number_of_attempts = 1 # 最多允许3次尝试 while number_of_attempts <= 3: saidpassword = input("请输入密码:\n") if saidpassword == correct_password: print("密码正确,验证通过") return # 输错后计数+1 number_of_attempts += 1 print(f"密码错误,你还有{3 - number_of_attempts + 1}次尝试机会") # 循环结束代表3次都输错 print("You have entered the wrong password too many times, please try again later")
调用时传入正确的密码即可,例如attempt_function("你的正确密码")。
内容的提问来源于stack exchange,提问作者Lifeable
相关产品推荐
相关产品推荐

