如何限制用户错误答题次数?Python算术题代码优化及输入处理
问题分析与修复方案
原代码存在的逻辑问题
- 错误次数累加无效:
false + 1未对变量赋值,错误次数不会实际增加,应改为false += 1 - 错误次数未按题重置:每道题开始时未将错误计数清零,会导致错误次数跨题累计
- 错误次数判断时机错误:当前逻辑在用户答对后才检查错误次数,无法在3次错误后直接显示答案并跳过题目
- 数字生成范围不符合需求:原代码生成0到对应位数最大值的数,但需求是level1生成1-9,level2生成11-99,level3生成100-999(需调整起始值)
- 答对加分逻辑不全:仅第一次答对时加分,若答错后再答对则不加分
- 未处理非数字输入:用户输入非数字时会抛出
ValueError导致程序崩溃
修复后的完整代码
import random def generate_integer(level): score = 0 level = int(level) # 根据难度确定数字范围 if level == 1: start, end = 1, 9 elif level == 2: start, end = 11, 99 elif level == 3: start, end = 100, 999 else: print("无效难度等级,请输入1、2或3") return for _ in range(10): # 用for循环直观控制10道题 x = random.randint(start, end) y = random.randint(start, end) answer = x + y false_count = 0 # 每道题开始重置错误次数 while True: try: user_input = input(f'{x} + {y} = ') user_answer = int(user_input) if user_answer == answer: score += 1 print("答对了!") break else: false_count += 1 if false_count == 3: print(f'错误次数过多,正确答案是:{x} + {y} = {answer}') break else: print(f'错误,请重试(剩余{3 - false_count}次机会)') except ValueError: print("请输入有效的整数!") print(f'最终得分:{score}/10') # 调用示例 generate_integer(input("请输入难度等级(1/2/3):"))
关键改进点说明
- 错误次数管理:每道题初始化错误计数为0,每次答错后累加,达到3次时直接显示答案并跳出当前题循环
- 输入合法性处理:用
try-except捕获ValueError,当用户输入非数字时提示重新输入 - 数字范围修正:严格按照需求设置各难度的数字起始和结束值
- 加分逻辑优化:无论第一次还是重试后答对,都能正确累计分数
- 循环结构优化:用
for循环替代while i !=10,更简洁直观地控制10道题的数量
内容的提问来源于stack exchange,提问作者Peiman Esmaeili
相关产品推荐
相关产品推荐

