如何实现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
相关产品推荐
相关产品推荐

