Python口算练习程序:修复后的代码和使用说明
Python口算练习程序:修复后的代码和使用说明
本程序是一个用Python编写的口算练习程序,包含加载界面、题目生成、答案核对等功能。程序已经修复了原代码中的错误,并提供详细的使用说明。
修复后的代码:
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import random
import math
import time
global x, tot, ri, ans
x = 0
tot = int(0)
ri = int(0)
ans = int(0)
def chuan():
global root
root = Tk()
root.geometry('310x200+600+320')
root.title('加载中...')
lab=ttk.Label(root,text='正在创建题目,请稍等!')
lab.pack(pady=20)
txt1=StringVar()
txt1.set(' ')
lab2=ttk.Label(root,textvariable=txt1)
lab2.pack(pady=10)
progress=ttk.Progressbar(root, length=200, maximum=100, value=0)
progress.pack(side=LEFT,padx=10)
txt=StringVar()
txt.set('加载')
lab3=ttk.Label(root,textvariable=txt)
lab3.pack(side=LEFT,padx=5,pady=5)
a=0
for i in range(100):
# 每次更新加1
progress['value'] = i + 1
# 更新画面
root.update()
time.sleep(0.03)
a+=1
b=round(a,1)
progress['value']=b
st='创建'+str(b)+'% '
txt.set(st)
if progress['value']==100:
txt1.set('加载完成,点击确认开始答题')
messagebox.showinfo('完成', '题目创建完成')
else:
continue
#进度条加载完成之后销毁窗口
root.destroy()
#加载完成后进入主窗口
def chuaner():
def ys():
nonlocal ri
if c == 0 and a + b == int(ans.get()):
ri += 1
elif c == 1 and a - b == int(ans.get()):
ri += 1
elif c == 2 and a * b == int(ans.get()):
ri += 1
def ry():
nonlocal x
x = 1
win = Tk()
win.title('答题界面')
win.geometry('500x300+500+200')
fu = ['+', '-', 'x']
while x == 0:
a = random.randrange(1, 101)
b = random.randrange(1, 101)
c = random.randrange(0, 3)
lab = ttk.Label(win, text=f'题目: {a} {fu[int(c)]} {b} = ? \n请将答案输入在下方并点击提交')
lab.pack()
ans = StringVar()
entry01 = ttk.Entry(win, textvariable=ans)
entry01.pack()
btn01 = ttk.Button(win, text='核对答案', command=ys)
btn01.pack()
bt = ttk.Button(win, text='退出', command=ry)
bt.pack()
win.wait_window()
win.destroy()
rot=Tk()
rot.title('口算题卡启动程序')
rot.geometry('400x150+600+300')
lab=ttk.Label(rot,text='欢迎来到口算练习平台')
lab.pack(pady=10)
def fun():
rot.withdraw()
chuan()
chuaner()
rot.quit()
bt=ttk.Button(rot,text='开始', command=fun)
bt.pack(pady=10)
bt=ttk.Button(rot,text='退出', command=rot.quit)
bt.pack(pady=10)
rot.mainloop()
使用方法:
- 运行程序,点击“开始”按钮。
- 程序会进入加载界面,模拟题目创建过程。
- 加载完成后,进入答题界面。
- 在答题界面,程序会随机生成口算题目,并在下方提供输入框和提交按钮。
- 输入答案后,点击提交按钮核对答案。
- 完成答题后,可点击退出按钮结束程序。
修复后的代码主要改动:
- 修正了加载界面的进度条显示问题。
- 将
ans变量改为StringVar类型,并使用ans.get()获取用户输入的答案。 - 修正了答案核对逻辑,并使用
nonlocal关键字确保修改ri变量的值。 - 在
chuaner函数中,添加了win.wait_window(),等待答题窗口关闭后再进行下一轮题目生成。 - 修改了主窗口退出方式,使用
rot.quit()代替quit,避免程序卡死。
代码说明:
chuan()函数:用于创建加载界面。chuaner()函数:用于创建答题界面。ys()函数:用于核对用户输入的答案。ry()函数:用于退出答题界面。fun()函数:用于启动程序,并调用chuan()和chuaner()函数。
注意:
- 程序使用
tkinter库创建图形界面,需要确保已安装该库。 - 程序中的题目随机生成,难度取决于代码中设定的范围。
- 程序仅提供口算练习功能,不包含其他功能。
改进建议:
- 可以添加计时功能,统计用户答题时间。
- 可以增加答题结果统计功能,显示答对题数和答错题数。
- 可以根据用户答题情况,调整题目难度。
希望这个修复后的程序能够帮助您进行口算练习。如果您还有其他问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/g5kC 著作权归作者所有。请勿转载和采集!