- 增强交互设计
- 采用✅/❌符号直观反馈
- 支持中文选项输入(自动转换大写)
- 实时进度提示(第X题)
- 健壮性保障
- 输入验证机制(强制有效选项)
- 异常处理(题库索引校验)
- 状态重置(重启测试时)
- 数据分析功能
- 完整答题记录跟踪
- 错题解析系统
- 耗时统计(分钟:秒格式)
import time
import random
class QuizCLI:
def __init__(self):
# 完整题库(共20题)
self.all_questions = [
{
"question": "人工智能元年是哪一年?",
"options": ["A. 1945年", "B. 1956年", "C. 1978年", "D. 2010年"],
"answer": "B"
},
{
"question": "图灵测试的提出者是谁?",
"options": ["A. 马文·明斯基", "B. 阿兰·图灵", "C. 杰弗里·辛顿", "D. 詹姆士·莱特希尔"],
"answer": "B"
},
{
"question": "达特茅斯会议的主要贡献是?",
"options": ["A. 发明了第一台计算机", "B. 提出了“人工智能”一词", "C. 开发了深度学习算法", "D. 设计了专家系统"],
"answer": "B"
},
{
"question": "莱特希尔报告导致人工智能进入了哪个阶段?",
"options": ["A. 第一次低谷", "B. 第二次低谷", "C. 第三次高潮", "D. 全面爆发期"],
"answer": "A"
},
{
"question": "20世纪90年代人工智能的核心观念是?",
"options": ["A. 神经网络", "B. 知识", "C. 深度学习", "D. 大数据"],
"answer": "B"
},
{
"question": "日本第五代计算机计划失败的主要原因是?",
"options": ["A. 资金不足", "B. 未突破关键技术", "C. 缺乏政策支持", "D. 市场需求低"],
"answer": "B"
},
{
"question": "21世纪初人工智能爆发的主要技术推动力是?",
"options": ["A. 符号推理", "B. 专家系统", "C. 深度学习", "D. 图灵测试"],
"answer": "C"
},
{
"question": "我国将人工智能纳入“互联网 ”战略的年份是?",
"options": ["A. 1978年", "B. 2000年", "C. 2015年", "D. 2020年"],
"answer": "C"
},
{
"question": "以下哪项是我国人工智能的领先领域?",
"options": ["A. 量子计算", "B. 人脸识别", "C. 太空探索", "D. 核能技术"],
"answer": "B"
},
{
"question": "专家系统的局限性不包括?",
"options": ["A. 知识获取困难", "B. 推理能力不足", "C. 开发成本低", "D. 无法形式化所有知识"],
"answer": "C"
},
{
"question": "人工智能第三阶段的特点不包括?",
"options": ["A. 芯片化趋势", "B. 符号推理主导", "C. 深度学习突破", "D. 跨界融合"],
"answer": "B"
},
{
"question": "阿兰·图灵在哪篇论文中提出“机器能否思考”?",
"options": ["A. 《计算机器与智能》", "B. 《人工智能的未来》", "C. 《深度学习理论》", "D. 《知识表示与推理》"],
"answer": "A"
},
{
"question": "第五代计算机计划的目标是构建?",
"options": ["A. 超级计算机", "B. 并行推理机", "C. 量子计算机", "D. 神经网络芯片"],
"answer": "B"
},
{
"question": "以下哪项属于我国人工智能的政策支持?",
"options": ["A. 特洛伊咖啡壶计划", "B. 第五代计算机计划", "C. “互联网 ”战略", "D. 莱特希尔报告"],
"answer": "C"
},
{
"question": "深度学习的突破主要应用于哪个领域?",
"options": ["A. 定理证明", "B. 机器翻译", "C. 计算机视觉", "D. 棋类博弈"],
"answer": "C"
},
{
"question": "“知识大脑”概念的失败原因是?",
"options": ["A. 计算性能不足", "B. 无法完整收集人类知识", "C. 缺乏专家参与", "D. 资金短缺"],
"answer": "B"
},
{
"question": "我国在人工智能领域的学术团体包括?",
"options": ["A. 中央神经系统学会", "B. 模式识别与机器智能", "C. 深度学习联盟", "D. 机器人伦理协会"],
"answer": "B"
},
{
"question": "人工智能新阶段的趋势不包括?",
"options": ["A. 硬件化", "B. 平台化", "C. 符号化", "D. 芯片化"],
"answer": "C"
},
{
"question": "以下哪位是深度学习领域的领军人物?",
"options": ["A. 阿兰·图灵", "B. 马文·明斯基", "C. 杰弗里·辛顿", "D. 詹姆士·莱特希尔"],
"answer": "C"
},
{
"question": "我国人工智能芯片的代表产品是?",
"options": ["A. 英特尔酷睿", "B. 华为昇腾", "C. 高通骁龙", "D. AMD锐龙"],
"answer": "B"
}
]
# 初始化变量
self.questions = []
self.current_question = 0
self.correct_answers = 0
self.start_time = 0
self.answer_records = []
def start_quiz(self):
""" 启动新的测试 """
self.questions = random.sample(self.all_questions, 5)
self.current_question = 0
self.correct_answers = 0
self.start_time = time.time()
self.answer_records = []
self.run_quiz()
def display_question(self, question_data):
""" 显示题目及选项 """
print(f"\n【第{self.current_question 1}题】{question_data['question']}")
for option in question_data["options"]:
print(f" {option}")
return input("请输入选项字母(A/B/C/D):").upper()
def validate_input(self, user_input):
""" 验证用户输入有效性 """
while user_input not in ['A', 'B', 'C', 'D']:
user_input = input("输入无效,请重新输入选项字母(A/B/C/D):").upper()
return user_input
def process_answer(self, user_choice, question_data):
""" 处理用户答案 """
is_correct = user_choice == question_data["answer"]
if is_correct:
self.correct_answers = 1
print("✅ 回答正确!")
else:
print(f"❌ 回答错误,正确答案是 {question_data['answer']}")
# 记录答题情况
self.answer_records.append({
"q_number": self.current_question 1,
"question": question_data["question"],
"options": question_data["options"],
"user_choice": user_choice,
"correct_answer": question_data["answer"],
"is_correct": is_correct
})
def show_results(self):
""" 显示最终结果 """
total_time = time.time() - self.start_time
print("\n" "="*40)
print(f"测试完成!最终得分:{self.correct_answers*20}/100")
print(f"正确率:{self.correct_answers/5*100:.1f}%")
print(f"耗时:{int(total_time//60)}分{int(total_time`)}秒")
# 显示错题解析
wrong_answers = [r for r in self.answer_records if not r["is_correct"]]
if wrong_answers:
print("\n【错题解析】")
for idx, record in enumerate(wrong_answers, 1):
print(f"{idx}. 第{record['q_number']}题:{record['question']}")
print(" 选项:" " | ".join(record["options"]))
print(f" 您的选择:{record['user_choice']}")
print(f" 正确答案:{record['correct_answer']}\n")
else:
print("\n 恭喜!全部回答正确!")
def prompt_restart(self):
""" 重启提示 """
choice = input("\n是否重新测试?(Y/N): ").upper()
if choice == "Y":
self.start_quiz()
else:
print("感谢参与测试!")
exit()
def run_quiz(self):
""" 主测试流程 """
for idx, question in enumerate(self.questions, start=1):
self.current_question = idx - 1 # 保持索引从0开始
user_choice = self.display_question(question)
validated_choice = self.validate_input(user_choice)
self.process_answer(validated_choice, question)
self.show_results()
self.prompt_restart()
if __name__ == "__main__":
quiz = QuizCLI()
quiz.start_quiz()
,