只需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(r'D:\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()
Logo

更多推荐