为while循环添加剩余尝试计数器(变量减法实现)的问题排查
问题原因
你代码里的Attempts_left变量只在程序启动时计算了一次初始值(3-0=3),之后每次循环中Attempt_count递增,但Attempts_left没有被重新计算,所以它的值始终保持3,导致提示语一直显示“3 attempts left”。
修正后的代码
super_password = "survive" attempt = "" attempt_count = 0 max_attempts = 3 out_of_attempts = False while super_password != attempt and not out_of_attempts: if attempt_count < max_attempts: # 每次循环时重新计算剩余尝试次数 attempts_left = max_attempts - attempt_count attempt = input(f"Enter password, {attempts_left} attempts left: ") attempt_count += 1 else: out_of_attempts = True if out_of_attempts: print("Access denied") else: print("Access granted")
关键调整说明
- 将
attempts_left的计算移到循环内部,确保每次输入前都会根据当前的attempt_count重新计算剩余次数 - 调整了
attempt_count +=1的位置:先计算剩余次数并提示用户输入,再递增计数,这样第一次输入时剩余次数显示3,第二次显示2,第三次显示1,符合直观逻辑 - 调整了变量名格式,遵循Python的PEP8命名规范(小写字母加下划线),提升代码可读性
内容的提问来源于stack exchange,提问作者Dot's quiries
相关产品推荐
相关产品推荐

