- C++
四则运算自动出题机
- 2024-3-2 19:06:39 @
# 1、导入模块
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import random
# 四则运算
def sizeyunsuan():
global realanswer # 声明全局变量在函数内的使用
mini = int(mixn.get()) # 获取用户输入的最小值,并且将最小值转换成整型赋值给变量mini
maxi = int(maxn.get()) # 获取用户输入的最大值,并且将最大值转换成整型赋值给变量maxi
x = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在x中
y = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在y中
typeo = random.randint(1,4) # 在1~4之间随机取一个数字保存在typeo中
# 加法
if typeo == 1:
code = str(x)+'+'+str(y) # 拼接字符串为加法运算
show1.insert(0,'题目为四则运算的加法') # 在show1提示框中加入提示文字
realshow.insert(0,code) # 在题目框中加入加法运算式
realanswer = x + y # 计算x和y变量值的和并保存到全局变量realanswer中
# 减法
elif typeo == 2:
code = str(x)+'-'+str(y) # 拼接字符串为减法运算
show1.insert(0,'题目为四则运算的减法') # 在show1提示框中加入提示文字
realshow.insert(0,code) # 在题目框中加入减法运算式
realanswer = x - y # 计算x和y变量值的差并保存到全局变量realanswer中
# 乘法
if typeo == 3:
code = str(x)+'*'+str(y) # 拼接字符串为乘法运算
show1.insert(0,'题目为四则运算的乘法') # 在show1提示框中加入提示文字
realshow.insert(0,code) # 在题目框中加入乘法运算式
realanswer = x * y # 计算x和y变量值的积并保存到全局变量realanswer中
# 除法
if typeo == 4:
# 防止非整数
while True:
if x % y == 0:
break
else:
x = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在x中
y = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在y中
code = str(x)+'/'+str(y) # 拼接字符串为除法运算
show1.insert(0,'题目为四则运算的除法') # 在show1提示框中加入提示文字
realshow.insert(0,code) # 在题目框中加入除法运算式
realanswer = x / y # 计算x和y变量值的商并保存到全局变量realanswer中
def place():
mini = mixn.get()
maxi = maxn.get()
numberi = numer.get()
numberi = str(numberi)
if maxi == '请输入整数' or mini == '请输入整数':
messagebox.showerror('ERROR','您没有输入数值!')
else:
realshow.delete(0,'end')
show1.delete(0,'end')
show2.delete(0,'end')
if numberi == '四则运算':
sizeyunsuan()
else:
messagebox.showerror('提示','目前只能使用四则运算')
def answer():
ansi = ans.get()
if ansi == '请输入答案' :
messagebox.showerror('ERROR','您没有输入答案!')
else:
if ansi == str(realanswer):
show2.delete(0,'end')
code = '答案正确'
show2.insert(0,code)
else:
show2.delete(0,'end')
code = '答案错误'
show2.insert(0,code)
# 变量初始化
realanswer = 0
machine = tk.Tk() # 实例化tkinter对象
machine.title('数学自动出题机')
# 在图形界面上创建标签label用以显示文字并且定位标签
ttk.Label(machine, text='输入最大值').grid(column=0,row=0)
ttk.Label(machine, text='输入最小值').grid(column=1,row=0)
ttk.Label(machine, text='选择题目类型').grid(column=2,row=0)
ttk.Label(machine, text='请输入你的答案').grid(column=0,row=3)
# 输入框
# 创建最大值输入框
maxn = tk.StringVar()
maxn.set('请输入整数')
maxenter = ttk.Entry(machine, width=16, textvariable=maxn)
maxenter.grid(column=0,row=1)
# 创建最小值输入框
mixn = tk.StringVar()
mixn.set('请输入整数')
mixenter = ttk.Entry(machine, width=16, textvariable=mixn)
mixenter.grid(column=1,row=1)
# 创建答案输入框
ans = tk.StringVar()
ans.set('请输入答案')
ansenter = ttk.Entry(machine, width=16, textvariable=ans)
ansenter.grid(column=0,row=4)
# 创建运算方法下拉框
numer = tk.StringVar()
numerChosen = ttk.Combobox(machine, width=16, textvariable=numer, state = 'readonly')
numerChosen['values']=('四则运算','一元一次方程','平方、开方','一次函数')
numerChosen.grid(column=2,row=1)
numerChosen.current(0)
# 创建按钮
# 生成题目按钮
action = ttk.Button(machine, width=12, text = '生成题目',command=place)
action.grid(column=1,row=2)
# 提交答案按钮
aw = ttk.Button(machine, width=12, text = '提交答案',command=answer)
aw.grid(column=0,row=5)
# 创建文本框
show1 = ttk.Entry(machine,show = '')
show1.grid(column=1,row=3)
show2 = ttk.Entry(machine,show = '')
show2.grid(column=1,row=4)
realshow = ttk.Entry(machine,show = '')
realshow.grid(column=1,row=5)
madeby = ttk.Entry(machine,show = '')
madeby.grid(column=2,row=4)
madeby.insert(0,'数学出题练习机')
madeby1 = ttk.Entry(machine,show = '')
madeby1.grid(column=2,row=5)
madeby1.insert(0,'made by Tom')
machine.mainloop()
# 一元一次方程
def yiyuanyici():
print('一元一次方程')
# 平方开方
def pingfang():
print('平方开方')
# 一次函数
def yicihanshu():
print('一次函数')
1 条评论
-
mrhowe SU @ 2024-3-2 19:53:55
# 1、导入模块 import tkinter as tk from tkinter import ttk from tkinter import messagebox import random # 四则运算 def sizeyunsuan(): global realanswer # 声明全局变量在函数内的使用 mini = int(mixn.get()) # 获取用户输入的最小值,并且将最小值转换成整型赋值给变量mini maxi = int(maxn.get()) # 获取用户输入的最大值,并且将最大值转换成整型赋值给变量maxi x = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在x中 y = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在y中 typeo = random.randint(1,4) # 在1~4之间随机取一个数字保存在typeo中 # 加法 if typeo == 1: code = str(x)+'+'+str(y) # 拼接字符串为加法运算 show1.insert(0,'题目为四则运算的加法') # 在show1提示框中加入提示文字 realshow.insert(0,code) # 在题目框中加入加法运算式 realanswer = x + y # 计算x和y变量值的和并保存到全局变量realanswer中 # 减法 elif typeo == 2: code = str(x)+'-'+str(y) # 拼接字符串为减法运算 show1.insert(0,'题目为四则运算的减法') # 在show1提示框中加入提示文字 realshow.insert(0,code) # 在题目框中加入减法运算式 realanswer = x - y # 计算x和y变量值的差并保存到全局变量realanswer中 # 乘法 if typeo == 3: code = str(x)+'*'+str(y) # 拼接字符串为乘法运算 show1.insert(0,'题目为四则运算的乘法') # 在show1提示框中加入提示文字 realshow.insert(0,code) # 在题目框中加入乘法运算式 realanswer = x * y # 计算x和y变量值的积并保存到全局变量realanswer中 # 除法 if typeo == 4: # 防止非整数 while True: if x % y == 0: break else: x = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在x中 y = random.randint(mini,maxi) # 在最小值和最大值之间随机取一个数字保存在y中 code = str(x)+'/'+str(y) # 拼接字符串为除法运算 show1.insert(0,'题目为四则运算的除法') # 在show1提示框中加入提示文字 realshow.insert(0,code) # 在题目框中加入除法运算式 realanswer = x / y # 计算x和y变量值的商并保存到全局变量realanswer中 def place(): mini = mixn.get() maxi = maxn.get() numberi = numer.get() numberi = str(numberi) if maxi == '请输入整数' or mini == '请输入整数': messagebox.showerror('ERROR','您没有输入数值!') else: realshow.delete(0,'end') show1.delete(0,'end') show2.delete(0,'end') if numberi == '四则运算': sizeyunsuan() else: messagebox.showerror('提示','目前只能使用四则运算') def answer(): ansi = ans.get() if ansi == '请输入答案' : messagebox.showerror('ERROR','您没有输入答案!') else: if ansi == str(realanswer): show2.delete(0,'end') code = '答案正确' show2.insert(0,code) else: show2.delete(0,'end') code = '答案错误' show2.insert(0,code) # 变量初始化 realanswer = 0 machine = tk.Tk() # 实例化tkinter对象 machine.title('数学自动出题机') machine.geometry("1200x800+300+300") # machine.maxsize("1200x800") # machine.minsize("1200x800") # 在图形界面上创建标签label用以显示文字并且定位标签 ttk.Label(machine, text='输入最大值').place(x=10,y=10) ttk.Label(machine, text='输入最小值').place(x=10,y=110) ttk.Label(machine, text='选择题目类型').place(x=10,y=210) ttk.Label(machine, text='请输入你的答案').place(x=10,y=310) # 输入框 # 创建最大值输入框 maxn = tk.StringVar() maxn.set('请输入整数') maxenter = ttk.Entry(machine, width=16, textvariable=maxn) maxenter.place(x=110,y=10) # 创建最小值输入框 mixn = tk.StringVar() mixn.set('请输入整数') mixenter = ttk.Entry(machine, width=16, textvariable=mixn) mixenter.place(x=110,y=110) # 创建答案输入框 ans = tk.StringVar() ans.set('请输入答案') ansenter = ttk.Entry(machine, width=16, textvariable=ans) ansenter.place(x=110,y=310) # 创建运算方法下拉框 numer = tk.StringVar() numerChosen = ttk.Combobox(machine, width=16, textvariable=numer, state = 'readonly') numerChosen['values']=('四则运算','一元一次方程','平方、开方','一次函数') numerChosen.place(x=110,y=210) numerChosen.current(0) # 创建按钮 # 生成题目按钮 action = ttk.Button(machine, width=12, text = '生成题目',command=place) action.place(x=10,y=510) # 提交答案按钮 aw = ttk.Button(machine, width=12, text = '提交答案',command=answer) aw.place(x=10,y=610) # 创建文本框 show1 = ttk.Entry(machine,show = '') show1.place(x=110,y=510) show2 = ttk.Entry(machine,show = '') show2.place(x=110,y=610) realshow = ttk.Entry(machine,show = '') realshow.place(x=110,y=710) machine.mainloop() # 一元一次方程 def yiyuanyici(): print('一元一次方程') # 平方开方 def pingfang(): print('平方开方') # 一次函数 def yicihanshu(): print('一次函数')
- 1