You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:42:17