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()
如果你觉得有用就点个呗
关注我,带你领略更多知识