Python数学游戏代码问题:正确答案误判及输入提示优化需求
数学游戏代码问题修复方案
问题1:正确答案仍提示错误的修复
你的代码在判断答案时犯了关键错误:把用户输入的答案和函数对象(比如add)做比较,而不是调用函数算出当前题目的正确结果。比如加法判断里的if answer_question == (add)应该改成if answer_question == add(num1, num2),这样才是拿用户输入和真正的正确答案对比。
问题2:添加“请输入数字”提示的修复
直接修改输入环节的input()提示文本,替换成要求的“请输入数字:”即可。
修改后的完整代码
# October 27 2022 # Kenneth Sodjahin # 导入随机数模块 import random # 操作选项说明 print("输入 A 代表加法:") print("输入 B 代表减法:") print("输入 C 代表乘法:") print("输入 D 代表除法:") print("输入 E 代表退出:") # 定义运算函数 def add(num1, num2): return num1 + num2 def subtract(num1, num2): return num2 - num1 def divide(num1, num2): return num2 / num1 def multiply(num1, num2): return num1 * num2 # 选择操作类型 options = input("你好,请选择操作选项:") # 退出逻辑 if options == 'E': print("再见!") exit() # 加法循环 while options == 'A': num1 = random.randrange(1, 100) num2 = random.randrange(1, 100) print(f"请问 {num1} + {num2} = ?") answer_question = int(input("请输入数字:")) if answer_question == add(num1, num2): print("回答正确!") options = input("请选择操作选项:") else: print("回答错误!") options = input("请选择操作选项:") continue # 减法循环 while options == 'B': num1 = random.randrange(1, 100) num2 = random.randrange(1, 100) print(f"请问 {num2} - {num1} = ?") answer_question = int(input("请输入数字:")) if answer_question == subtract(num1, num2): print("回答正确!") options = input("请选择操作选项:") else: print("回答错误!") options = input("请选择操作选项:") continue # 乘法循环 while options == 'C': num1 = random.randrange(1, 100) num2 = random.randrange(1, 100) print(f"请问 {num1} * {num2} = ?") answer_question = int(input("请输入数字:")) if answer_question == multiply(num1, num2): print("回答正确!") options = input("请选择操作选项:") else: print("回答错误!") options = input("请选择操作选项:") continue # 除法循环 while options == 'D': num1 = random.randrange(1, 100) num2 = random.randrange(1, 100) print(f"请问 {num2} ÷ {num1} = ?") # 除法用浮点数接收输入,避免精度误差 answer_question = float(input("请输入数字:")) # 浮点数比较加入精度容错,避免微小差异导致误判 if abs(answer_question - divide(num1, num2)) < 0.001: print("回答正确!") options = input("请选择操作选项:") else: print("回答错误!") options = input("请选择操作选项:") continue
额外说明
除法部分做了小幅优化:由于浮点数计算存在精度误差,用abs(answer_question - divide(num1, num2)) < 0.001判断相等,避免因微小精度差异导致误判。如果题目要求整数除法,可以修改divide函数为return num2 // num1,同时用户输入用int()接收。
内容的提问来源于stack exchange,提问作者Hello
相关产品推荐
相关产品推荐

