用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()
经验分享 程序员 微信小程序 职场和发展