当前位置: 无忧屋首页 > 文章中心 > Python >

python出题小学加减乘除算术练习题源码

来源:网络

发布人:天道酬勤

发布时间:2024-01-30

马上2024年放寒假了,用python开发了一个,小学加减乘除算术练习题自动出题工具,可以自动出题,自动判断对错。

  1. from tkinter import *
  2. import random
  3.   
  4. def jiajian():# 加减法函数,生成加数,和,被减数,减数,差
  5.     joj=random.randint(1,2)
  6.     a = random.randint(1, 999)
  7.     b = random.randint(1, 999)
  8.     if joj==1:  #随机产生
  9.         h=a+b
  10.         return [a,'+',b,h]
  11.     else:
  12.         if a > b:
  13.             h=a-b
  14.             return [a,'-',b,h]
  15.         else:
  16.             h=b-a
  17.             return [b,'-',a,h]
  18.   
  19. def cc(i=1):
  20.     #乘除运算,返回乘数,积。i表示难度,1为个位数,2为2位数,3为3位数,j,1是乘,2是除
  21.     jc = random.randint(1, 2)
  22.     if i==1:    #难度1
  23.         a=random.randint(2,9)
  24.         b = random.randint(2, 9)
  25.         j=a*b
  26.         if jc==1:#乘法
  27.             return [a,'*',b,j]    #1为乘法,2为除法
  28.         else:
  29.             return [j,'/',a,b]    #1为乘法,2为除法
  30.     elif i==2:   #难度2
  31.         a = random.randint(11, 99)
  32.         b = random.randint(11, 99)
  33.         j = a * b
  34.         if jc == 1:  # 乘法
  35.             return [a,'*', b, j]  # 1为乘法,2为除法
  36.         else:
  37.             return [j, '/', a, b]  # 1为乘法,2为除法
  38.     else:   #难度3
  39.         a = random.randint(101, 999)
  40.         b = random.randint(101, 999)
  41.         j = a * b
  42.         if jc == 1:  # 乘法
  43.             return [a, '*', b, j]  # 1为乘法,2为除法
  44.         else:
  45.             return [j, '/', a, b]  # 1为乘法,2为除法
  46.   
  47. def yz():#这是按钮的验证函数。
  48.     global lista
  49.     if ent1.get()==str(lista[3]):
  50.         ndsel()
  51.         lab1.config(text=str(lista[0])+lista[1]+str(lista[2])+'=')
  52.         lab2.config(text='上一题解题正确,已更新题目')
  53.         lab2.config(fg='green')
  54.         ent1.delete(0,END)
  55.         ent1.focus()
  56.     else:#回答错误,清除文本框,标签2更新
  57.         ent1.delete(0,END)
  58.         ent1.focus()
  59.         lab2.config(text='解答错误请重新输入')
  60.         lab2.config(fg='red')
  61.   
  62. def ndsel():#单选按钮难度设定
  63.     global lista
  64.     a=nd.get()
  65.     if a == 1:
  66.         lista=jiajian()
  67.         lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=')
  68.         lab2.config(text='题目已变更')
  69.         lab2.config(fg='green')
  70.         ent1.delete(0, END)
  71.         ent1.focus()
  72.     else:
  73.         lista=cc(a-1)
  74.         lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=')
  75.         lab2.config(text='题目已变更')
  76.         lab2.config(fg='green')
  77.         ent1.delete(0, END)
  78.         ent1.focus()
  79.   
  80. lista=jiajian()
  81. root=Tk()
  82. root.title("小学加减乘除练习")
  83. root.geometry('600x400')
  84. labf1=LabelFrame(root,text='模式选择',width=500,height=150)
  85. labf1.pack()
  86. nd=IntVar()
  87. nd.set(1)
  88. rb1=Radio<button(labf1,text='加减法运算',variable=nd,value=1,command=ndsel)
  89. rb2=Radio<button(labf1,text='十以内乘除法',variable=nd,value=2,command=ndsel)
  90. rb3=Radio<button(labf1,text='百以内乘除法',variable=nd,value=3,command=ndsel)
  91. rb4=Radio<button(labf1,text='千以内乘除法',variable=nd,value=4,command=ndsel)
  92. rb1.pack(side=LEFT)
  93. rb2.pack(side=LEFT)
  94. rb3.pack(side=LEFT)
  95. rb4.pack(side=LEFT)
  96. lab1=Label(root,text=str(lista[0])+lista[1]+str(lista[2])+'=',font=('宋体',28))
  97. lab1.pack()
  98. ent1=Entry(root,font=('宋体',28),width=10)
  99. ent1.pack()
  100. but1=Button(root,text='确定',font=('宋体',28),command=yz)
  101. but1.pack()
  102. lab2=Label(root,text='请在文本框内输入正确答案,点击确定键验算',pady=5)
  103. lab2.pack()
  104. '''f=open('a.txt','w',encoding='utf8')
  105. for i in range(10000):
  106.     listb=jiajian()
  107.     f.write(str(listb[0])+listb[1]+str(listb[2])+'='+"ttt")
  108. f.close()'''
  109. root.mainloop()

免责声明:文中图文均系网友发布,转载来自网络,如有侵权请联系右侧客服QQ删除,无忧屋网友发布此文仅为传递信息,不代表无忧屋平台认同其观点。