python课程设计——单项选择标准化考试

python带你制作自动答题程序,速度超越98%人 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 阅读详情

功能要求

  1. 本系统采用序列或字典保存单个试题,每个数据应当包括:题干、选项、答案等信息
  2. 本系统功能:
    (1)试题录入:可以随时添加试题
    (2)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)
    (3)答题:用户可实现输入自己的答案
    (4)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
    (5)将试题信息保存到文件中。
    (6)进入系统之前要先输入密码
    (7)退出系统

功能截图

  1. 登陆界面
  2. 部分功能
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 保存功能
    在这里插入图片描述
    在这里插入图片描述

代码如下

import openpyxl 
from openpyxl import Workbook
from openpyxl import load_workbook
import time
import random
import sys


#设置题目
questions = [{'问题':'1+1','A':'2','B':'25','答案':'B'},
            {'问题':'1+2','A':'3','B':'26','答案':'B'},
            {'问题':'1+3','A':'4','B':'27','答案':'B'},
            {'问题':'1+4','A':'5','B':'28','答案':'B'},
            {'问题':'1+5','A':'6','B':'29','答案':'B'},
            {'问题':'1+6','A':'7','B':'30','答案':'B'},
            {'问题':'1+7','A':'8','B':'25','答案':'B'},
            {'问题':'1+8','A':'9','B':'25','答案':'B'},
            {'问题':'1+9','A':'10','B':'25','答案':'B'},
            {'问题':'1+0','A':'1','B':'25','答案':'B'}
]
wrong_questions  = []#错题本




#设置菜单
def menu42():
    print('[1]添加题目')
    print('[2]开始答题')
    print('[3]查看错题本')
    print('[4]保存题目与错题')
    print('[5]查看题库')
    print('[6]导入题库')
    print('[7]退出程序')

#添加题目
def add_question():
    dic_question = {}
    while True:#添加并判断题目是否相等
        dic_question['问题'] = input('请输入新添加的问题:')
        for question in questions:
            if question['问题'] == dic_question['问题']:
                print('问题已存在')
                break
        else:
            dic_question['A'] = input('请输入A选项:')
            dic_question['B'] = input('请输入B选项:')
            dic_question['答案'] = input('请输入答案:')
            questions.append(dic_question)
            print('添加成功')
            a = input('请选择是否再次添加,回答是或否:')
            if a=='是':
                add_question()
            else:
                pass
        break


#开始答题,答题结束10秒后系统将完成阅卷
def answer_questions42():
    a = eval(input('请输入你将测试题目的数量:'))#设置题目数量
    
    s = 0#分数储存
    i = 1#循环控制
    copy_questions = questions.copy()#复制题库
    while i <= a and a< len(questions):#循环控制:首先要小于题目数量;而且不超过题目数量
        question = random.choice(copy_questions)#随机抽取
        copy_questions.remove(question)#删除出现过的题目,去重
        print('问题{}:'.format(i),question['问题'])#打印问题
        print('-------------')
        print('选项:','A、',question['A'],'B、',question['B'])#打印选项
        print('---------------')
        answer = input('请输入答案:')#用户输入答案
        if answer == question['答案']:#判断用户输入的正确性
            print('回答正确,加1000分')
            s = s+1000#单个题目正确就加1000分
        else:
            print('答错了,放入错题本,记得复习。')#打印出错的提示

            wrong_questions.append(question)#错题加入错题本
        i = i+1#循环控制,使输出题目为用户输入题目数量 
    print('请耐心等待5秒钟,你的总分是-------')#增加真实感      
    time.sleep(5)#让用户等待5秒钟
    print(s)#打印用户总分数


#查看错题本
def showwrong_questions42():
    if len(wrong_questions) == 0:
        print('牛皮,您没有错题')
    else:
        for i in wrong_questions:
            print('-------------------')
            print('问题是:',i['问题'])
            
            print('选项A:',i['A'],'选项B:',i['B'],)
            
            print('答案是',i['答案'])
            print('---------------------')


#全部题目保存加错题保存
def write_tofile42():
    a = input('输入你要保存的名称:')
    wb = Workbook()#实例化一个对象
    sheet1 = wb.create_sheet('题库',0)#创建一个工作表
    sheet2 = wb.create_sheet('错题本',1)
    
    sheet1.sheet_properties.tabColor = "1072BA"
    sheet2.sheet_properties.tabColor = "1006BA"
    sheet1.cell(row=1,column=1).value='问题'
    sheet1.cell(row=1,column=2).value='选项A'
    sheet1.cell(row=1,column=3).value='选项B'
    sheet1.cell(row=1,column=4).value='答案'
    sheet2.cell(row=1,column=1).value='问题'
    sheet2.cell(row=1,column=2).value='选项A'
    sheet2.cell(row=1,column=3).value='选项B'
    sheet2.cell(row=1,column=4).value='答案'
    for j in range(len(questions)):
        
        sheet1.cell(row=2+j,column=1).value=questions[j]['问题']
        sheet1.cell(row=2+j,column=2).value=questions[j]['A']
        sheet1.cell(row=2+j,column=3).value=questions[j]['B']
        sheet1.cell(row=2+j,column=4).value=questions[j]['答案']
    for m in range(len(wrong_questions)):
        sheet2.cell(row=2+m,column=1).value=wrong_questions[m]['问题']
        sheet2.cell(row=2+m,column=2).value=wrong_questions[m]['A']
        sheet2.cell(row=2+m,column=3).value=wrong_questions[m]['B']
        sheet2.cell(row=2+m,column=4).value=wrong_questions[m]['答案']
    wb.save('{}.xlsx'.format(a))

#关闭程序
def close_file42():
    sys.exit()

#查看题库
def show_questions42():
    print('问题是:','选项A:','选项B:','答案',sep='   ')
    print('--------------------------------------------')
    for i in questions:

        print(i['问题'],i['A'],i['B'],i['答案'],sep='          ')
    print('--------------------------------------')      

#文件式导入题库
def write_questions42():
    print("-通过这种方法,你可以导入上次运行的错题,可以导入新题,还不用在程序里输入-")
    print('----点击后题目会自动导入,可以查看题库中导入的题目------')
    a = input('请输入已存在excel的路径:')
    wb = load_workbook(r'{}'.format(a))
    b = wb.sheetnames[0]
    ws = wb[b]


    s = 1
    while True and s< ws.max_row:

        dic={}
        dic['{}'.format(ws['{}{}'.format('A',1)].value)]='{}'.format(ws['{}{}'.format('A',s+1)].value) 
        dic['{}'.format(ws['{}{}'.format('B',1)].value)]='{}'.format(ws['{}{}'.format('B',s+1)].value) 
        dic['{}'.format(ws['{}{}'.format('C',1)].value)]='{}'.format(ws['{}{}'.format('C',s+1)].value) 
        dic['{}'.format(ws['{}{}'.format('D',1)].value)]='{}'.format(ws['{}{}'.format('D',s+1)].value)
        questions.append(dic) 
        s+=1
    

#设置主函数
def main42():
        while True:
            print('------登陆-------')
            print('账号是学号,密码是学号后五位')
            key_word = input("账号:")
            password = input("密码:")

            while True and password ==  key_word[-5:] and len(key_word) > 5:
                        print('----------------------')
                        
                        print('----------------------')
                        print('------单项选择标准化考试------')
                        menu42()    # 打印菜单
                        num = input('请输入您的选项:')
                        if num == '1':
                            add_question()  
                        elif num == '2':
                            answer_questions42() 
                        elif num == '3':
                            showwrong_questions42() 
                        elif num == '4':
                            write_tofile42()
                        elif num == '5':
                            show_questions42()
                        elif num == '6':
                            write_questions42()
                        elif num == '7':
                            close_file42()
                        else:
                            print('您选择的有误,请重新选择')
            else:
                print('你输入的密码有误,请重新输入')



if __name__=='__main__':
    main42()

函数功能总结

在这里插入图片描述


如果你觉得有用就点个👍呗
关注我,带你领略更多知识

chatgpt赋能python:Python编写选择题程序 本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。 阅读详情

相关推荐

利用python编写的基于tkinter、pandas,excle写的单选题答题练习程序

利用python编写的基于tkinter、pandas,excle写的单选题答题练习程序,供学习交流之用,execle是题库,格式要一样,答案不能少于3个,不能多于4个,就可以直接使用。

Python课程设计——单项选择题答题与管理系统(已利用tkinter库实现图形化界面)

本文的单项选择题与管理系统通过面向对象实现,调用tkinter完成了基本GUI界面,文件存储方面采用txt格式化存储、读取数据,主要功能围绕基本的“增删改查”展开,详细的程序介绍可以私聊我本人获取ppt和实验报告,仅供学习和参考,转载需标明出处。

z2141830440的博客 3039

Python:一个简单的“单项选择”的检测题特别是

用python里的tkinter组件和文本文件写了一个能够检测只有单项选择题的小程序,这据这个思路,稍加修改就可以作成:多项选择题、判断题等的程序。 好了,先看一看文本件的题结成: 1.在TCP/IP的进程之间进行通信经常使用客户/服务器方式,下面关于客户和服务器的描述错误的是( )。 A.客户和服务器是指通信中所涉及的两个应用进程。 B.客户/服务器方式描述的是进程之间服务与被服务的关系。 C.服务器是服务请求方,客户是服务提供方。 D.一个客户程序可与多个服务器进行通信。 A 题目描述、答案和正确答案各占一行。 存储题目的类Stest保存在Stest.py文件中,类结构为: cla

带UI的python单项选择题评分系统

在《EXCEL制作选择题试卷,Python快速汇总成绩》的基础上,借助强大的人工智能,快速的完成了一个带UI的单项选择题评分系统。

m0_57793634的博客 802

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 570

【论文阅读|小目标分割算法ASF-YOLO】

论文题目:ASF-YOLO: A novel YOLO model with attentional scale sequence fusion for cell instance segmentation 论文链接: https://arxiv.org/abs/2312.06458 代码链接:https://github.com/mkang315/ASF-YOLO 摘要(Abstract) 作者提出了一种新颖的基于 "You Only Look Once"(YOLO)的注意力尺度序列融合框架(ASF-YO

dally2的博客 8118

西工大软院大一计算机基础课程设计:nwpu-cram终极指南 [特殊字符]

# 西工大软院大一计算机基础课程设计:nwpu-cram终极指南 🚀 西北工业大学软件学院大一计算机基础课程设计是每位新生必须面对的重要挑战,而nwpu-cram项目则为同学们提供了宝贵的复习资料和学习指南。这个开源项目汇集了西北工业大学软件学院大一到大三各门课程的复习资料,特别是**信息技术基础认知与实践**课程的完整课程设计资源,帮助同学们高效应对考试压力。 ## 项目核心功能解析 ✨

gitblog_00347的博客 412

python——体育收入排行2012-2019

请分析文件并读取数据,完成以下功能: 1. 某年的收入排名前若干名选手 如果输入n是2012-19之间的年份,则可以输入整数k,输出n年的前k名排名信息。如果k大于当年排名运动员人数,则输出当年所有的信息。每行一名运动员信息,以' | '间隔该行各项信息。 2. 某年属于某个运动项目的所有运动员信息,和收入总和 如果输入的是'sport'(不区分大小写),则可以继续输入一个年份201*,输出一个当年排行中的运动项目菜单,按照字符串升序排列,格式见示例,再输入运动项目对应的数字来输出该项运动当

m0_62488776的博客 2257

基于SpringBoot+Vue的租赁管家系统(毕业设计/课程设计系统源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 847

cmw500 lte非信令测试_WiFi信令测试在研发过程中的作用

  1、关于信令测试的故事  2016年的某天,某著名网络产品公司技术负责人致电寻求技术支持:我们的无线路由器遇到了一个困惑:我们某款路由器应用于实际WiFi网络中时,WiFi终端接入非常困难。但是我们使用测试工具检测此路由器,它的所有物理射频指标都非常优异。不知道是为什么?  我来到了测试现场看到:WiFi路由器受控于芯片公司的测试工具,其WiFi发射机指标在非信令测试仪上显示:无论功率、EVM...

weixin_39662263的博客 3925

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

项目模板目录

目前所有项目的链接目录

weixin_47040861的博客 2155

MySQL——cost成本计算之MySQL如何选择使用索引(trace)

文章目录前言trace工具分析执行计划 前言 在之前博客中,根据测试案例,发现同样的sql语句,因为传入的条件值的不同,导致MySQL有时候选择使用索引,有时候又不适用索引。 如下所示sql的执行计划: EXPLAIN SELECT * FROM employees WHERE name > 'aaa'; EXPLAIN SELECT * FROM employees WHERE name > 'zzzz'; 在MySQL中,为什么会出现上述这种玄乎的现象呢? 本篇博客重点说明原因。 在说

专注写bug 679

基于SpringBoot+Vue的智慧建造平台设计与实现(毕业设计/课程设计系统源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 1029

LAMMPS-使用MATLAB计算径向分布函数

首先需要使用LAMMPS进行分子动力学模拟,并获取到所需的数据文件,LAMMPS是一款开源的分子动力学模拟软件,可以模拟原子、分子和离子的运动行为,对于本文的目标假设你已经完成了LAMMPS的安装和模拟过程,获得了数据文件。)是一种重要的统计工具,用于描述原子或分子之间的空间分布情况,通过计算RDF可以获得物质的结构信息、相互作用距离以及相位转变等重要参数,本文将介绍如何使用MATLAB计算LAMMPS生成的数据文件的径向分布函数。变量替换为你的实际数据文件的名称。

weixin_50547796的博客 515

手把手教您国内安装 Claude Code 并配置自定义大模型(包含New-API中转和可视化管理工具的使用)

国内免魔法畅用 Claude Code!手把手教你 Windows 安装、配置文件写法、对接阿里百炼 / DeepSeek / 智谱✨,附完整参数、正确命令、三方工具管理方案,新手一次成功!✅

XiaoqiangClub的博客 3783

django基于Python可视化的学习系统的设计与实现

可视化的学习系统设计过程中采用Python开发语言,B/S结构,采取 django框架,并以MySql为数据库进行开发。结合以上技术,对本系统的整体、数据库、功能模块、系统页面以及系统程序等设计进行了详细的研究与规划。Python是由荷兰数学和计算机研究学会的吉多•范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型,以及解释型语言的本质,使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言,开发代码量较小,代码风格简洁优雅,拥有丰富的第三方库。

平安喜乐 1155

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MOOC数据科学课程完课率低的真相:课程设计错配学习规律

数据科学是一门强实践性、问题驱动的工程学科,其能力生成依赖真实业务场景、渐进式认知负荷管理与闭环反馈机制。传统MOOC课程将知识线性切片、忽视pandas与机器学习等工具在真实数据流中的协同使用,导致学员陷入‘学得多、用不了’困境。关键症结在于结构设计违背人类学习规律:时间压缩失真、模块割裂造成能力断层、自动批改强化考试思维而非调试能力。提升实效需回归‘问题驱动单元’‘认知脚手架’‘分步归因反馈’和‘微项目链’四大设计原则——让每一次学习都锚定真实问题,每一次报错都成为能力跃迁的支点。

weixin_34082695的博客 320

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于SpringBoot+Vue的智慧交通协同系统(毕业设计/课程设计系统源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 814

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

(附源码)Python学生兼职平台系统-毕业设计 课程设计160938

学生兼职平台系统主要功能模块包括用户管理、招聘信息管理、招聘资讯、兼职中心等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采用Python编程语言,MySQL数据库,Ajax异步交互,根据Ajax异步模式等开发工具,完成了系统的主要模块的页面设计和功能实现。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对学生兼职平台系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性

Q_3461074420的博客 1391

基于Python的框架学习资源推送系统(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行。

weixin_bscoding 872

基于Python的膳食健康系统开发实现(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 1156

基于Python+Flask框架的校园爱心帮扶平台(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行。

weixin_bscoding 1153

基于Python的在线电影网站系统(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行。

weixin_bscoding 1079

基于Python的高校成绩分析系统(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 1053

基于Python的民办高校教师职称晋升系统(计算机毕业设计/课程设计源码+论文+部署等)

系统测试是软件开发生命周期中的重要阶段,用于全面验证系统的功能、性能、安全性和稳定性是否符合预期要求。测试内容包括功能测试、性能测试、安全性测试和兼容性测试等多个方面,通过模拟实际使用场景,确保系统在真实环境下能够正常运行

weixin_bscoding 840
上一篇: pip安装错误之Requirement already satisfied
下一篇: python程序设计——班级档案管理系统
Xcodd
博客等级 码龄6年 36粉丝 21原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值