Python使用列表和字典实现简单的考试系统详解

  • Post category:Python

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

至此,一个简单的基于列表和字典实现的考试系统已经完成。