Python代码判断加法结果相等却返回No,需实现循环输入直至退出
问题1:明明答案正确却输出"No"的原因
input()函数获取的用户输入是字符串类型,而added是两个整数相加得到的整数类型,Python里不同类型的值直接比较永远不相等——哪怕数值完全一样,比如输入的"3"和整数3,比较结果也是False,所以会走else分支输出"No"。
解决方法:把用户输入转成整数,同时加入异常处理避免非数字输入导致程序崩溃:
# 替换原answer行的写法 try: answer = int(input("What is " + str(num_1) + " + " + str(num_2) + " = ")) except ValueError: print("请输入有效数字!") continue
问题2:实现重复答题直到主动退出
用while循环构建无限答题流程,同时给用户提供退出触发条件(比如输入"quit"退出)。完整修改后的代码如下:
import random score = 0 print("加法答题游戏!输入'quit'可退出") while True: num_1 = random.randrange(1, 15) num_2 = random.randrange(1, 15) added = num_1 + num_2 user_input = input(f"What is {num_1} + {num_2} = ") # 判断是否退出游戏 if user_input.lower() == 'quit': print(f"游戏结束!你的得分是:{score}") break # 处理数字输入并判断答案 try: answer = int(user_input) if added == answer: print("Yes") score += 1 else: print(f"No,正确答案是{added}") except ValueError: print("请输入有效数字或'quit'退出!")
关键改动说明
- 用
while True创建无限循环,直到用户输入'quit'时执行break退出流程 - 用
user_input.lower()统一判断逻辑,不管用户输入'Quit'还是'QUIT'都能识别退出指令 - 加入
try-except捕获非数字输入的异常,避免程序直接崩溃 - 用f-string简化了题目字符串的拼接,代码更简洁易读
内容的提问来源于stack exchange,提问作者Code_Rik
相关产品推荐
相关产品推荐

