用python自制一个简单的答题程序
只需random和pandas模块,就可以自制一个简单的答题程序;可以选择读取mysql数据库或者excel,只要转换成DataFrame就行,读取csv用pd.read_csv;读取xlsx用pd.read_excel;读取数据库用pd.read_sql。表头如下: 表头只要一样,运行起来就没问题
import pymysql,random
import pandas as pd
from pandas.core.frame import DataFrame
#可以读取数据库或者excel
# conn = pymysql.connect(
# host=127.0.0.1,
# user=root,
# passwd=123456,
# db=stock,
# port=3306,
# charset=utf8)
# df = pd.read_sql(select * from test2, conn) # from 后面是表名;读取的是数据库
df = pd.read_excel(rD:python脚本题目重新处理-C.xlsx,sheet_name="Sheet1", encoding=gbk ) #读取excel
Questions = df.values.tolist() # 将DataFrame转换成列表
class Learning():
def __init__(self):
self.all_test = 0 #做的全部题目数量
self.all_list = [] #储存此次做的题目,用来避免重复
self.corrects = 0 #正确数量
self.errors = 0 #错误数量
self.Questions = Questions
self.choose_input = int(input(欢迎进入答题程序,请选择每次要答题的数量:))
def choose_num(self):
num = range(0, 512) # 范围在0到512之间
nums = random.sample(num, self.choose_input) # 选取n个元素
n = 0
for a in nums:
print("题目:{}".format(self.Questions[a][1]))
for i in self.Questions[a][3:7]:
print(i)
stu_Amount = input(请输入你的答案:)
if stu_Amount == self.Questions[a][2]:
print(恭喜你答对了!)
self.corrects += 1
else:
print(哦豁,你答错了,正确答案是:{}.format(Questions[a][2]))
self.errors += 1
self.all_test += 1
self.all_list.append(a)
n +=1
if n < self.choose_input:
choose = input(是否继续答题?,按Q退出答题,按回车键继续:)
if choose == Q:
print(做题的序号为{}.format(self.all_list))
print(你提前结束答题,此次共做{}道题,答对{}题,答错{}题,再接再厉!.format(self.all_test, self.corrects, self.errors))
break
else:
print(答题结束,此次共做{}道题,答对{}题,答错{}题,再接再厉!.format(self.all_test, self.corrects, self.errors))
break
def Show(self):
while True:
while True:
a = random.randint(0, 512)
if a not in self.all_list:
print(题目重复了,重新来)
break
else:
continue
print("题目:{}".format(self.Questions[a][1]))
for i in self.Questions[a][3:7]:
print(i)
stu_Amount = input(请输入你的答案:)
if stu_Amount == self.Questions[a][2]:
print(恭喜你答对了!)
self.corrects += 1
else:
print(很遗憾,你答错了,正确答案是:{}.format(Questions[a][2]))
self.errors += 1
self.all_test += 1
self.all_list.append(a)
choose = input(是否继续答题?,按Q退出答题,按回车键继续:)
if choose == Q:
print(做题的序号为{}.format(self.all_list))
print(此次共做{}道题,答对{}题,答错{}题,再接再厉!.format(self.all_test,self.corrects,self.errors))
break
else:
continue
def judge(self):
if self.choose_input == 1:
print(你进入了单题答题模式,可随时退出!)
self.Show()
else:
print(你进入了多题答题模式,可随时退出!)
self.choose_num()
Learning = Learning()
Learning.judge()
