欢迎!我白天是个邮递员,晚上就是个有抱负的演员。这是我的网站。我住在天朝的帝都,有条叫做Jack的狗。
马上放暑假了,用python开发了一个,小学加减乘除算术练习题自动出题工具,可以自动出题,自动判断对错。
from tkinter import *import random def jiajian():# 加减法函数,生成加数,和,被减数,减数,差 joj=random.randint(1,2) a = random.randint(1, 999) b = random.randint(1, 999) if joj==1: #随机产生 h=a+b return [a,'+',b,h] else: if a > b: h=a-b return [a,'-',b,h] else: h=b-a return [b,'-',a,h] def cc(i=1): #乘除运算,返回乘数,积。i表示难度,1为个位数,2为2位数,3为3位数,j,1是乘,2是除 jc = random.randint(1, 2) if i==1: #难度1 a=random.randint(2,9) b = random.randint(2, 9) j=a*b if jc==1:#乘法 return [a,'*',b,j] #1为乘法,2为除法 else: return [j,'/',a,b] #1为乘法,2为除法 elif i==2: #难度2 a = random.randint(11, 99) b = random.randint(11, 99) j = a * b if jc == 1: # 乘法 return [a,'*', b, j] # 1为乘法,2为除法 else: return [j, '/', a, b] # 1为乘法,2为除法 else: #难度3 a = random.randint(101, 999) b = random.randint(101, 999) j = a * b if jc == 1: # 乘法 return [a, '*', b, j] # 1为乘法,2为除法 else: return [j, '/', a, b] # 1为乘法,2为除法 def yz():#这是按钮的验证函数。 global lista if ent1.get()==str(lista[3]): ndsel() lab1.config(text=str(lista[0])+lista[1]+str(lista[2])+'=') lab2.config(text='上一题解题正确,已更新题目') lab2.config(fg='green') ent1.delete(0,END) ent1.focus() else:#回答错误,清除文本框,标签2更新 ent1.delete(0,END) ent1.focus() lab2.config(text='解答错误请重新输入') lab2.config(fg='red') def ndsel():#单选按钮难度设定 global lista a=nd.get() if a == 1: lista=jiajian() lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=') lab2.config(text='题目已变更') lab2.config(fg='green') ent1.delete(0, END) ent1.focus() else: lista=cc(a-1) lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=') lab2.config(text='题目已变更') lab2.config(fg='green') ent1.delete(0, END) ent1.focus() lista=jiajian()root=Tk()root.title("小学加减乘除练习")root.geometry('600x400')labf1=LabelFrame(root,text='模式选择',width=500,height=150)labf1.pack()nd=IntVar()nd.set(1)rb1=Radiobutton(labf1,text='加减法运算',variable=nd,value=1,command=ndsel)rb2=Radiobutton(labf1,text='十以内乘除法',variable=nd,value=2,command=ndsel)rb3=Radiobutton(labf1,text='百以内乘除法',variable=nd,value=3,command=ndsel)rb4=Radiobutton(labf1,text='千以内乘除法',variable=nd,value=4,command=ndsel)rb1.pack(side=LEFT)rb2.pack(side=LEFT)rb3.pack(side=LEFT)rb4.pack(side=LEFT)lab1=Label(root,text=str(lista[0])+lista[1]+str(lista[2])+'=',font=('宋体',28))lab1.pack()ent1=Entry(root,font=('宋体',28),width=10)ent1.pack()but1=Button(root,text='确定',font=('宋体',28),command=yz)but1.pack()lab2=Label(root,text='请在文本框内输入正确答案,点击确定键验算',pady=5)lab2.pack()'''f=open('a.txt','w',encoding='utf8')for i in range(10000): listb=jiajian() f.write(str(listb[0])+listb[1]+str(listb[2])+'='+"\t\t\t")f.close()'''root.mainloop()
