Python实现随机抽题测验功能有没有更简便的方法?
随机测验程序简洁实现方案
你的原代码冗余核心原因是对每个题目都单独写了重复的判断、答题、判分逻辑,完全可以通过数据结构优化来消除重复代码,优化思路如下:
- 用字典存储题目-正确答案的配对关系,彻底去掉冗余的多分支条件判断
- 用
enumerate遍历实现自动计数,替代手动维护题目序号、删除列表元素的操作 - 统一抽离公共的答题、判分逻辑,无需每个题目重复写相同代码
优化后可运行代码
import random # 统一存储题目和对应答案,后续新增题目仅需修改此处 question_bank = { "What is the capital of England?": "London", "What is the capital of France?": "Paris", "What is the capital of Germany?": "Berlin" } # 打乱题目顺序 question_list = list(question_bank.items()) random.shuffle(question_list) score = 0 # 遍历出题,enumerate第二个参数1代表序号从1开始计数 for q_num, (question, correct_ans) in enumerate(question_list, 1): print(f"\n\nQuestion {q_num}\n") user_input = input(f"{question}\n") # 加strip处理用户输入前后多余空格的情况,容错性更好 if user_input.strip() == correct_ans: print("\nCorrect") score += 1 else: print("\nIncorrect") print(f"You scored {score} out of {len(question_list)} correct!")
优化优势
- 总代码行数比原版本压缩了60%左右,逻辑更清晰
- 后续新增题目不需要修改业务逻辑,仅需在
question_bank字典中新增一行键值对即可 - 自动适配题目数量,无需硬编码循环次数、总分值等参数
- 额外增加了输入首尾空格的容错处理,比原版本实用性更强
内容的提问来源于stack exchange,提问作者Stray
相关产品推荐
相关产品推荐

