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

如何实现Python随机数学小测验每次出1题且答对自动计分功能

随机数学小测验实现方案

原有代码问题梳理

  • 缺少random模块导入语句,无法生成随机数
  • 错误将运算符列表ops直接与单个运算符字符串做条件判断,逻辑不成立
  • 整除分支错误使用==比较运算符代替=赋值运算符
  • 没有预先选定单个运算符的逻辑,打印题目时才随机选运算符,无法和计算的正确答案对应
  • 缺少用户输入采集、答案校验、分数累计的核心逻辑
  • 整除场景未做前置校验,可能出现除不尽、结果为负的情况,造成答题歧义

修正后可直接运行的代码

import random

score = 0
# 运算符列表只需初始化一次,无需放在循环内重复创建
ops = ['+', '-', '*', '//']

for i in range(10):
    num1 = random.randint(1, 20)
    num2 = random.randint(1, 20)
    # 随机选本次使用的运算符
    op = random.choice(ops)
    
    # 根据运算符计算正确答案,特殊场景做数值校验
    if op == '+':
        answer = num1 + num2
    elif op == '-':
        # 若不需要负数结果,可添加以下注释内的代码
        # while num1 < num2:
        #     num1 = random.randint(1, 20)
        #     num2 = random.randint(1, 20)
        answer = num1 - num2
    elif op == '*':
        answer = num1 * num2
    elif op == '//':
        # 保证整除结果为正整数,避免歧义
        while num1 < num2 or num1 % num2 != 0:
            num1 = random.randint(1, 20)
            num2 = random.randint(1, 20)
        answer = num1 // num2
    
    # 打印题目并获取用户输入
    user_input = input(f"第{i+1}题:{num1} {op} {num2} = ")
    # 兼容用户输入非数字的异常场景
    try:
        user_answer = int(user_input)
    except ValueError:
        print("输入无效,本题不得分")
        continue
    
    # 校验答案并累计分数
    if user_answer == answer:
        print("回答正确,加10分")
        score += 10
    else:
        print(f"回答错误,正确答案是{answer}")

# 最终输出总分
print(f"\n10道题已全部完成,你的总分为:{score}/100")

核心实现逻辑

  • 单次循环生成一道题目,共10道题,答对一题得10分,满分100分
  • 整除运算自动调整数值保证结果为正整数,避免出现除不尽的歧义
  • 兼容用户输入非数字的异常场景,不会直接报错崩溃
  • 每道题答题后即时反馈对错,全部答完后输出最终总分

内容的提问来源于stack exchange,提问作者JoeyG27

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:57:03