While循环输出异常:输入正确PIN仍重复输出问题求助
问题分析与修复方案
原代码的核心问题
- 正确PIN输入后未终止循环:输入正确PIN时,代码仅打印欢迎界面,但未跳出
while循环。此时tries值仍小于3,循环会继续执行,导致重复弹出PIN输入提示。 - 错误判断逻辑冗余且无效:第二个独立的
if pin != correct_Pin会在每次输入后执行(哪怕PIN已匹配正确);且里面的tries > 3判断永远不会触发——因为循环条件是tries < 3,当tries等于3时循环直接终止,根本不会进入循环体执行该判断。 - 若把
pin = input(...)移到循环外:只会获取一次输入值,三次循环都用同一个PIN判断。如果首次输入错误,后续两次循环的判断结果仍为错误,因此会连续打印三次“Please try again”后终止程序。
修复后的代码
correct_Pin = "4349" tries = 0 while tries < 3: pin = input("HELLO, PLEASE ENTER YOUR BANK 4-DIGIT PIN: ") tries += 1 if correct_Pin == pin: print("Correct | Welcome, please choose a selection") print( ''' 1. View balance. *********************************** 2. Withdraw. ************************************ 3. Make deposit *********************************** 4. Exit *********************************** ''' ) break # 输入正确后直接跳出循环,避免重复执行 else: # 用else替代独立的if判断,消除逻辑冗余 print("Please try again") # 循环结束后统一判断是否耗尽所有尝试次数 if tries == 3 and pin != correct_Pin: print("Too many failed attempts. Access locked.")
修复说明
- 添加
break终止循环:PIN匹配正确时执行break,直接跳出while循环,避免程序继续要求输入PIN。 - 用
else整合错误判断:将错误提示放在if的else分支内,避免PIN正确时仍执行错误提示逻辑。 - 优化尝试次数耗尽的判断:循环结束后统一检查是否用完3次机会且PIN始终错误,给出锁定提示。
内容的提问来源于stack exchange,提问作者semistupid
相关产品推荐
相关产品推荐

