【2023】选择题刷题程序python实现

本文介绍了一个使用Python编写的刷题程序,主要功能是从CSV文件中加载题目,显示题目及其选项,检查用户答案,并根据答案更新文件。程序包括load_questions函数加载数据,display_question函数显示题目,check_answer函数验证答案,以及主函数实现刷题流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一. 从CSV文件中加载题目(load_questions)

1. 代码

2. 功能

3. 解析

二、在控制台上显示题目和选项(display_question)

1. 代码

2. 功能

3. 解析

三、检查答案是否正确(check_answer)

1. 代码

2. 功能

3. 解析

四、刷题程序主函数

1. 代码

2. 功能

3. 解析


一. 从CSV文件中加载题目(load_questions)

1. 代码

def load_questions(file_path):
    questions = []

    with open(file_path, 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        next(reader)  # 跳过表头

        for row in reader:
            question = {
                'topic': row[0],
                'content': row[1],
                'options': row[2:6],
                'answer': row[6]
            }
            questions.append(question)

    return questions

2. 功能

        从题目文件中加载题目列表,使用csv模块读取CSV文件,并将每一行的数据转化为题目字典。题目字典包括题目的标题、内容、选项和答案,并将所有题目字典存储在一个列表中。

3. 解析

  • load_questions函数接受一个文件路径作为参数,并返回一个题目列表。

  • 使用open函数打开文件,并使用csv.reader函数将文件转换为一个可迭代的Reader对象。

  • 使用next(reader)跳过表头,即读取文件中的第一行数据,通常是标题行。

  • 遍历reader对象,对于每一行数据,将题目的各个字段存储在一个字典中,并将该字典添加到题目列表中。

  • 返回题目列表。

        对于每一行数据,通过索引方法row[x]来获取相应的字段,将这些字段存储在一个字典中,然后将字典添加到题目列表中。

        在这里,CSV文件的结构如下:

        通过使用CSV模块的reader函数,我们可以方便地处理CSV文件,并将每一行数据转换为一个列表。然后可以使用列表的索引来获取特定的字段值。在这种情况下,题目的内容、选项和答案分别位于索引1到6的位置,因此可以通过切片操作将这些字段提取出来。最后,将提取出的字段分别存储在一个字典中,并将该字典添加到题目列表中。

二、在控制台上显示题目和选项(display_question

1. 代码

def display_question(question_number, question):
    print(f'题目{question_number}: {question["content"]}')
    for i, option in enumerate(question['options']):
        print('{}: {}'.format(chr(ord('A') + i), option))

2. 功能

        显示题目的内容,包括题目标题、选项和题号。通过循环遍历选项列表,并使用enumerate函数来获取选项的索引和选项内容,按照题号和选项的格式进行打印。

3. 解析

  • 接收题目编号question_number和题目信息字典question作为参数。

  • 使用print函数打印题目编号和题目内容,格式为题目{question_number}: {question["content"]}

  • 使用enumerate函数遍历题目的选项列表question['options']enumerate函数返回一个迭代器,该迭代器会在每次迭代时返回一个包含索引和元素的元组。

  • 使用chr(ord('A') + i)来生成选项的字母标识,ord('A')表示字母'A'的ASCII码,ord('A') + i表示字母依次递增。

  • 使用print函数打印选项的字母标识和选项内容,格式为字母标识: 选项内容

三、检查答案是否正确(check_answer)

1. 代码

def check_answer(question, user_answer):
    correct_answer = question['answer']
    return user_answer.upper() == correct_answer.upper()

2. 功能

        判断用户的答案是否正确,并给与相应的反馈。

3. 解析

  • 接收题目信息字典question和用户答案user_answer作为参数。

  • 从题目信息字典question中获取正确答案correct_answer

  • 使用user_answer.upper()correct_answer.upper()将用户答案和正确答案转换为大写字母。

  • 比较转换后的用户答案user_answer.upper()和正确答案correct_answer.upper()是否相等。

  • 返回比较结果的布尔值,表示用户的答案是否正确。

四、刷题程序主函数

1. 代码

def main():
    file_path = '单选题.csv'
    questions = load_questions(file_path)

    print('欢迎使用毛概刷题程序!')
    print('请阅读题目并输入你的答案(A、B、C或D)')

    correct_answers = 0

    for i, question in enumerate(questions, 1):
        display_question(i, question)
        user_answer = input('请输入你的答案: ')
        if check_answer(question, user_answer):
            print('回答正确!')
            correct_answers += 1
        else:
            correct_answer = question['answer']
            print(f'回答错误!正确答案是: {correct_answer}')
            file_path = '单选_1.csv'
            with open(file_path, 'a', encoding='utf-8', newline='') as file:
                writer = csv.writer(file)
                writer.writerow([question['topic'], question['content'], question['options'][1], question['options'][0],
                                 question['options'][2], question['options'][3], question['answer']])

    print(f'你答对了 {correct_answers} 道题目。')

2. 功能

        先加载题目并打印欢迎信息,之后循环显示题目、接受用户答案、判断答案、给出反馈……

3. 解析

  • 定义了一个文件路径file_path,指定了题目文件的位置。

  • 调用load_questions函数从指定的文件路径中加载题目信息,将加载的题目存储在questions列表中。

  • 使用print函数打印欢迎信息和提示用户输入答案的说明。

  • 定义了一个变量correct_answers,用于记录用户回答正确的题目数量,初始值为0。

  • 使用enumerate函数遍历题目列表questions,同时获取题目的索引i和题目信息字典question

  • 使用display_question函数打印题目和选项。

  • 使用input函数等待用户输入答案,并将用户输入的答案存储在变量user_answer中。

  • 使用check_answer函数检查用户的答案是否正确。

  • 如果用户的答案正确,使用print函数打印回答正确的提示信息,并将correct_answers加1。

  • 如果用户的答案错误,使用print函数打印回答错误的提示信息,以及正确答案。

  • 将题目信息写入到名为单选_1.csv的文件中,以便后续参考。

  • 最后,使用print函数打印用户答对的题目数量。

为了在Windows安装ADB工具,你可以按照以下步骤进行操作: 1. 首先,下载ADB工具包并解压缩到你自定义的安装目录。你可以选择将其解压缩到任何你喜欢的位置。 2. 打开运行窗口,可以通过按下Win+R键来快速打开。在运行窗口中输入"sysdm.cpl"并按下回车键。 3. 在系统属性窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。 4. 在环境变量窗口中,选择"系统变量"部分,并找到名为"Path"的变量。点击"编辑"按钮。 5. 在编辑环境变量窗口中,点击"新建"按钮,并将ADB工具的安装路径添加到新建的路径中。确保路径正确无误后,点击"确定"按钮。 6. 返回到桌面,打开命令提示符窗口。你可以通过按下Win+R键,然后输入"cmd"并按下回车键来快速打开命令提示符窗口。 7. 在命令提示符窗口中,输入"adb version"命令来验证ADB工具是否成功安装。如果显示版本信息,则表示安装成功。 这样,你就成功在Windows安装ADB工具。你可以使用ADB工具来执行各种操作,如枚举设备、进入/退出ADB终端、文件传输、运行命令、查看系统日志等。具体的操作方法可以参考ADB工具的官方文档或其他相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [windows环境安装adb驱动](https://blog.csdn.net/zx54633089/article/details/128533343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Windows安装使用ADB简单易懂教程](https://blog.csdn.net/m0_37777700/article/details/129836351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QomolangmaH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值