Python使用列表和字典实现简单的考试系统详解
本篇文章将介绍如何使用Python中的列表和字典来实现一个简单的考试系统。
1. 开发环境
本系统的开发环境如下:
- Python 3.6.9
2. 实现思路
本系统的基本功能是:用户可以查询试卷、做题、查看答案、统计成绩。
考试系统需要存储试卷、答案和用户得分三种数据,因此可以将每一份试卷抽象成一个包含问题、选项和答案的字典,并将多个试卷存储于列表当中。
同时,还需要将用户做题的情况存储于字典中,键为题目编号,值为用户的答案。
用户提交答案时,将用户做题的答案与正确答案相比较,计算得分并输出。
3. Python代码实现
以下是本系统的Python代码实现,具体实现思路和注释已在代码中给出。
import time
# 试题字典,包含所有试题
question_list = [
{
"number": 1,
"question": "Python中,如何向列表中添加元素?",
"choices": {
"A": "list.new(element)",
"B": "list.add(element)",
"C": "list.append(element)",
"D": "以上都不是",
},
"answer": "C"
},
{
"number": 2,
"question": "下面哪个选项可以获取一个不包含重复元素的列表?",
"choices": {
"A": "list.distinct()",
"B": "list.unique()",
"C": "set(list)",
"D": "list.remove_duplicate()",
},
"answer": "C"
},
{
"number": 3,
"question": "Python中通常使用哪个库来进行数据科学和机器学习的开发?",
"choices": {
"A": "scipy",
"B": "numpy",
"C": "matplotlib",
"D": "pandas",
},
"answer": "D"
}
]
# 答案字典,用于存储用户的答案
answer_dict = {}
# 统计得分并输出
def calculate_score(answer_dict):
score = 0
for question in question_list:
if question["answer"] == answer_dict.get(question["number"]):
score += 1
print("你的得分是%d分。" % score)
# 输出题目及选项
def print_question(question):
print("问:%s" % question["question"])
for key, value in question["choices"].items():
print("%s:%s" % (key, value))
# 输出所有题目
def print_all_questions():
print("试卷内容如下:")
for question in question_list:
print_question(question)
print()
# 用户做题
def take_exam():
# 输出所有题目
print_all_questions()
# 记录答案
for question in question_list:
answer_dict[question["number"]] = input("请输入第%d题的答案:" % question["number"])
# 统计得分并输出
calculate_score(answer_dict)
# 查看答案
def show_answer():
print("答案如下:")
for question in question_list:
print("%d:%s" % (question["number"], question["answer"]))
# 主程序,接受用户的选择并调用对应的函数
def main():
while True:
print("请选择操作:")
print("1. 开始考试")
print("2. 查看答案")
print("3. 退出程序")
choice = input("请输入操作编号:")
if choice == "1":
# 开始考试
take_exam()
elif choice == "2":
# 查看答案
show_answer()
elif choice == "3":
# 退出程序
print("感谢使用!")
time.sleep(1)
break
else:
print("无效操作,请重新选择!")
# 启动程序
if __name__ == '__main__':
main()
4. 示例说明
4.1 开始考试
运行程序,输入选项 1,即可开始考试。程序将输出试卷内容,接着用户输入答案。
例如,用户输入的答案分别为 “C”、”C”、”D”,则程序输出:
你的得分是1分。
4.2 查看答案
运行程序,输入选项 2,即可查看答案。
例如,程序输出:
答案如下:
1:C
2:C
3:D
至此,一个简单的基于列表和字典实现的考试系统已经完成。