Python循环逻辑异常:无法终止且无法实现连续累加
问题分析与修复方案
问题根源
- 变量作用域错误:
last_answer被定义在while True循环内部,每次循环都会被重置为None。哪怕用户选择继续(输入Y),下一次循环开始时last_answer又变回None,永远走不到累加分支,只能反复进入初始的两个数字输入流程。 - 逻辑分支不完整:累加分支没有打印结果、也没有询问是否继续的逻辑,就算走到这个分支也无法正常交互。
修复后的代码
def showAddition(): print("You have selected: \"Addition\"") last_answer = None # 变量移到循环外,保留上一次计算结果 while True: if last_answer is not None: # 连续累加分支 next_num = int(input("Please input another number: ")) answer = calc.addNums(last_answer, next_num) print(f'Your answer is {answer}') else: # 首次输入两个数字相加 num1 = int(input("Please enter your first number: ")) num2 = int(input("Please enter your second number: ")) answer = calc.addNums(num1, num2) print(f'Your answer is {answer}') # 统一处理继续/退出逻辑 continue_prompt = input("Would you like to continue? Y/N\n") if continue_prompt.upper() in ("Y", "YES"): last_answer = answer else: break
关键修改说明
- 将
last_answer初始化移到循环外部,确保循环迭代时能保留历史计算结果。 - 调整判断条件为
last_answer is not None,更准确识别是否需要进入累加流程。 - 把询问是否继续的逻辑移到循环末尾,统一处理首次计算和累加后的交互,避免代码重复。
- 在累加分支添加结果打印,让用户能直观看到每次累加后的新结果。
内容的提问来源于stack exchange,提问作者Breadstyx
相关产品推荐
相关产品推荐

