Python四则运算代码报TypeError缺失user参数 求修复与功能补全
错误原因梳理
- 类名定义与实例化时名称不一致:定义的类是
cooperators,实例化时错误写为caloperators - 调用方法时未传递必要参数:
operator()、play()方法都要求传入用户选择的运算符参数,原代码调用时没有传参,且choose()方法返回的用户输入没有存储直接丢弃 - 缺少
random模块导入,调用random.randint会触发未定义错误 - 功能未补全:仅实现了加法的出题逻辑,缺少减、乘、除的实现,且没有接收用户答题输入、判断答案正确性的逻辑
- 无效代码:最后几行打印方法对象的代码没有实际作用,还会输出无关内容
- 细节问题:运算符选项里乘法标注为大写
M,判断逻辑里是小写m,未做输入大小写兼容;只生成了1个随机数,不符合两个随机变量出题的要求
修复后的完整代码
import random # 打印操作选项 print("你偏好的数学运算:\n加法(a) \n减法(s) \n乘法(m) \n除法(d)") class MathQuiz: def choose(self): # 接收用户输入并转小写,兼容大小写输入 user_choice = input("选择一个运算符开始答题:").lower() # 校验输入合法性 while user_choice not in ['a','s','m','d']: user_choice = input("输入无效,请从a/s/m/d中选择:").lower() return user_choice def generate_question(self, op): # 生成两个1-10的随机数 num1 = random.randint(1, 10) num2 = random.randint(1, 10) # 除法特殊处理,保证可以整除,避免小数计算歧义 if op == 'd': num1 = num1 * num2 # 映射运算符符号 op_map = {'a':'+', 's':'-', 'm':'*', 'd':'/'} print(f"题目:{num1} {op_map[op]} {num2} = ?") # 计算正确答案 if op == 'a': correct = num1 + num2 elif op == 's': correct = num1 - num2 elif op == 'm': correct = num1 * num2 elif op == 'd': correct = num1 // num2 # 接收用户答案 try: user_ans = int(input("请输入你的答案:")) except ValueError: print("输入无效,请输入整数答案") return # 判断对错并输出结果 if user_ans == correct: print("恭喜你,答对了!") else: print(f"答错了,正确答案是:{correct}") # 实例化运行程序 quiz = MathQuiz() user_op = quiz.choose() quiz.generate_question(user_op)
功能说明
- 支持加减乘除四种运算选择,自动兼容用户输入大小写
- 随机生成1-10之间的两个整数出题
- 除法运算默认生成可整除的题目,避免小数计算歧义
- 接收用户输入的答案,自动判断对错并给出正确结果
内容的提问来源于stack exchange,提问作者suraj_0o0
相关产品推荐
相关产品推荐

