自己用Python写了一个“做题神器”小程序,谁能给帮助加个GUI?

您所在的位置:网站首页 如何用wps制作答题器 自己用Python写了一个“做题神器”小程序,谁能给帮助加个GUI?

自己用Python写了一个“做题神器”小程序,谁能给帮助加个GUI?

2024-07-08 17:37| 来源: 网络整理| 查看: 265

自己用Python写了一个“做题神器”小程序,谁能给帮助加个GUI?

主要特点:

1、每做20道新题,就会返回去复习一下错题,之后再继续往下做新题,再复习;

2、做题时,题库按规定格式用excel导入,做题过程中也定时保存到excel里,程序本身不保存题库内容;

3、多样化的复习标准:初级阶段:上次错、错三次以上、错多于对;高级阶段:只做对过一次的、五天以前做的,总之,对易错题及时复习、反复复习,且分阶段分层次地复习。

目前缺点:Tkinter学不会,缺一个GUI。

欢迎高手帮助,做一个GUI,同时也帮我学习一下tkinter。

import os import sys import platform #pf = platform.system() #定义个通用的模块导入方法: try: import openpyxl #print("导入%s成功" % openpyxl) except: os.system("pip install openpyxl") import openpyxl try: import pandas as pd except: os.system("pip install pandas") import pandas as pd import datetime #import time #打开表格 path = input("请输入题库文件路径(如:D:/test.xlsx): ") print("请确保格式正确:A序号,B题型,C题干,D答案,E-H选项,J出错次数;K正确次数;L最后正误;M最后做题时间。") ''' jx = input("是否继续: Y/N ") if jx = "N": sys.exit() else: break ''' wb = openpyxl.load_workbook(path) ws = wb.active #print(ws) ''' column = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' def cell(a, b): col = column[a] row = b cell = ws['%s%d'% (col, row)].value return cell af = cell(2, 1) print(af) ''' def cell(col, row): cell = ws['%s%d'% (col, row)].value return cell ''' def cell(CL): col = CL[0] row = int(CL[1]) cell = ws['%s%d'% (col, row)].value return cell ''' #定义做题方法 def answering(i): biaoqian = str(ws["B%d"%i].value) print(biaoqian) tihao = str(ws["A%d"%i].value) tigan = ws["C%d"%i].value print(tihao + "、", end = "") print(tigan) A = ws["E%d"%i].value #print(A) B = ws["F%d"%i].value C = ws["G%d"%i].value D = ws["H%d"%i].value if (A == None) and (B == None) and (C == None) and (D == None): print("这是判断题,请用-1表示错、1表示对作答……") else: print('A、', end = "") print(A) print('B、', end = "") print(B) print('C、', end = "") print(C) print('D、', end = "") print(D) dn = input("请输入你的答案: ") print("做题进度:%0.2f percent" %((int(i)/int(nrows))*100)) ws["M%d"%i].value = datetime.datetime.now().date() while dn =='': dn = input("未作答,请输入你的答案:") else: if dn == str(ws["D%d"%i].value): print("正确!") ws["L%d"%i].value = 'Rt' ws["K%d"%i].value = ws["K%d"%i].value if ws["K%d"%i].value == None: ws["K%d"%i].value = 1 #wb.save(path) else: ws["K%d"%i].value = int(ws["K%d"%i].value) +1 #wb.save(path) elif dn == "Tui": wb.save(path) print("再见!!") sys.exit() else: print("错误!") print('正确答案是:%s'% ws["D%d"%i].value) ws["L%d"%i].value = 'Wr' ws["J%d"%i].value = ws["J%d"%i].value if ws["J%d"%i].value == None: ws["J%d"%i].value = 1 #wb.save(path) else: ws["J%d"%i].value = int(ws["J%d"%i].value) +1 #wb.save(path) nrows = ws.max_row ncols = ws.max_column #ncols = info.last_cell.column print("当前题库共同有%d道题……加油!!" % nrows) #J列:出错次数;K列:正确次数;L列:最后正误;M列:最后做题时间 df = pd.read_excel(path) #df.info() rt = df["正确次数"].isnull().sum() print("当前未做题数为:%d" %rt) #rt1 = (df["正确次数"]==1).sum() #print("当前正确次数为1的题有%d道!!" %rt1) #rt2 = (df["最后做题时间"] < datetime.datetime.now() - datetime.timedelta(days = 5)).sum() #print("最后做题时间为五天以前的题有%d道!!" % rt2) rt3 = (df["最后正误"]== "Wr").sum() if rt3 == 0: print("没有错题了!") else: print("最后一次还有%d道题又做错了!!" % rt3) def reviewing(i): for p in range(nrows-1): if (p>=2) and (ws["J%d"%p].value != None) and (ws["K%d"%p].value != None) and (int(ws["J%d"%p].value) > int(ws["K%d"%p].value)): print('错多对少:') answering(p) p = p +1 #将错题次数大于3次的,再拿出来做一遍 elif (p>=2) and (ws["J%d"%p].value != None) and (ws["K%d"%p].value != None) and (ws["J%d"%p].value>=3) and (ws["K%d"%p].value=2) and (ws["L%d"%p].value == 'Wr'): print('上次错:') answering(p) p = p +1 elif p >= i-1: #m = m+1 wb.save(path) break #当复习到新做题时,返回上层循 else: pass m = 0 for i in range(nrows-1): #将所有的题先做一遍,中途退出后再做,之前做对的不重做 while (i >= 2) and (ws["K%d"%i].value ==None): print('第一次做或一直没做对过:') answering(i) i = i+1 m = m+1 print("本次已做%d题!" % m) if (m % 20 == 0) or (i >= nrows - 2): #每新做20道题就进入复习模式,复习完成后再返回做新题模式。最后无新题可做时再进入复习模式。 wb.save(path) reviewing(i) #五天以前的再拿出来做做 for i in range(nrows): if (i >= 2) and (ws["M%d"%i].value.date() < datetime.datetime.now().date() - datetime.timedelta(days = 5)): print("五天前的") answering(i) i = i+1 m = m+1 print("本次已做%d题!" % m) if (m % 20 == 0) or (i >= nrows - 2): wb.save(path) reviewing(i) else: pass #做对两次以下的再做一遍 def less_than_twice(): m = 0 for i in range(nrows): if (i >= 2) and (ws["K%d"%i].value = nrows - 2): wb.save(path) reviewing(i) else: pass less_than_twice() less_than_twice() #魔鬼训练,反复做,查漏补缺 wb.save(path) print("请让我叫您孤独求败!!青山不改,绿水常流!!咱们后会有期!!")

基本上做成下面这个样子就好!!

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3