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()

使用方法:

  1. 运行程序,点击“开始”按钮。
  2. 程序会进入加载界面,模拟题目创建过程。
  3. 加载完成后,进入答题界面。
  4. 在答题界面,程序会随机生成口算题目,并在下方提供输入框和提交按钮。
  5. 输入答案后,点击提交按钮核对答案。
  6. 完成答题后,可点击退出按钮结束程序。

修复后的代码主要改动:

  1. 修正了加载界面的进度条显示问题。
  2. ans变量改为StringVar类型,并使用ans.get()获取用户输入的答案。
  3. 修正了答案核对逻辑,并使用nonlocal关键字确保修改ri变量的值。
  4. chuaner函数中,添加了win.wait_window(),等待答题窗口关闭后再进行下一轮题目生成。
  5. 修改了主窗口退出方式,使用rot.quit()代替quit,避免程序卡死。

代码说明:

  • chuan()函数:用于创建加载界面。
  • chuaner()函数:用于创建答题界面。
  • ys()函数:用于核对用户输入的答案。
  • ry()函数:用于退出答题界面。
  • fun()函数:用于启动程序,并调用chuan()chuaner()函数。

注意:

  • 程序使用tkinter库创建图形界面,需要确保已安装该库。
  • 程序中的题目随机生成,难度取决于代码中设定的范围。
  • 程序仅提供口算练习功能,不包含其他功能。

改进建议:

  • 可以添加计时功能,统计用户答题时间。
  • 可以增加答题结果统计功能,显示答对题数和答错题数。
  • 可以根据用户答题情况,调整题目难度。

希望这个修复后的程序能够帮助您进行口算练习。如果您还有其他问题,请随时提出。

Python口算练习程序:修复后的代码和使用说明

原文地址: https://www.cveoy.top/t/topic/g5kC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录