优秀作品

# 100以内加减法口算,自动出题、批改程序


gui = GUI("fine")

gui.HideConsoleWindow()

math = MATH()


total = 0      # 记录做题总数

path = 0       # 记录答对题数

error = 0      # 记录答错题数


global isNewnum = 0       # 是否出国题目,0未出题,1已出题

global firstnum = 0       # 第一个运算符,全局变量

global secondnum = 0      # 第二个运算符,全局变量

global symbol = ""        # 运算符号,全局变量


def chuti()        # 出题函数

{

    firstnum = math.rand(0,100)     # 获取0~100的随机数,作为加数

    if math.rand(0,1) == 0          # 获取随机数0或1,0代表加法,1代表减法

    {

        symbol = "+"   

        # 如果是加法,则再产生一个100-firstnum的随机数,作为被加数,避免超出100  

        secondnum = math.rand(0,100-firstnum)    # 获取被加数     

    }

    else

    {

        symbol = "-"

        # 如果是减法,则再产生一个0~firstnum的随机数,作为减数,避免超出结果<0

        secondnum = math.rand(0,firstnum)    # 获取被加数

    }

    isNewnum = 1    # 表明已出过题目

}


def pigai()        # 批改函数

{

    if symbol == "+"          # 如果是加法

    {

        result = firstnum + secondnum    # 两数相加

    }

    elif  symbol == "-"

    {

        result = firstnum - secondnum    # 相减

    }

    return result                       # 返回结果

}


# 设计界面

title = "100以内加减法训练"

size  = [20,5,50,22] 


text1 = ["总题目数      |宋体|20","text",22,2,10,1]

text2 = ["答对题目数    |宋体|20|0|200|0","text",22,4,10,1]   # 显示绿色

text3 = ["答错题目数    |宋体|20|255|0|0","text",22,6,10,1]   # 显示红色

text4 = ["","text",9,10,5,1]      # 显示被加数

text5 = ["","text",16,10,3,1]     # 显示运算符

text6 = ["","text",21,10,5,1]     # 显示加数

text7 = ["","text",28,10,3,1]     # 显示等号

edit  = ["","edit","i",33,10,5,1]    # 录入答案


button1 = ["出题","button",9,14,10,1]  # 出题按钮

button2 = ["批改","button",22,14,10,1]  # 批改按钮


list = [title,size,text1,text2,text3,text4,text5,text6,text7,edit,button1,button2]  #打包参数


gui.Fine(list)             # 创建界面

gui.SendText([itoc(total),itoc(path),itoc(error),"","","","="])    # 显示界面初始数据


while gui.FineClosed() != -1                # 检查窗口,如果窗口没有被关闭,执行while循环体

{

    PowerDown(3)                           # 低功耗

    if gui.FineReady() == -1 {continue}    # 检查窗口是否有数据输出请求,如果没有跳转

    x = gui.FineRead()                      # 读出窗口输出的数据

    if x[0] == "button-0"           # x[0]是窗口输出的指令,本窗口只有两个button按钮,button-0表示出题按钮,button-1表示批改按钮

    {

        chuti()            # 调用出题函数,赋值firstnum,secondnum,symbol

        gui.SendText([itoc(total),itoc(path),itoc(error),itoc(firstnum)," "+symbol,itoc(secondnum)," ="])    # 显示界面初始数据

        gui.SendEdit([""])   # 清除edit组件上的内容

    }

    elif x[0] == "button-1"     # button-1表示点击了批改按钮

    {

        if isNewnum == 0        # 如果没有出题,先点击批改,则弹出对话框,提示错误

        {

            box = GUI("box")

            box.MessageBox("请先出题,再批改!","确定")

            while box.MessageBoxClosed() != -1 {PowerDown(3)}

            continue      # 跳转程序,进入主窗口查询

        }

        total = total + 1

        result = pigai()     # 返回运算结果

        if result == x[1]    # 判断答案是否正确,窗口输出的第二项是edit组件录入的数据

        {

            path = path +1   # 答对 path +1

            # 更新答题总数、答对题数、答错题数

            gui.SendText([itoc(total),itoc(path),itoc(error),itoc(firstnum)," "+symbol,itoc(secondnum)," ="])    # 更新窗口显示

            box = GUI("box")

            box.MessageBox("恭喜你答对了!","确定")

            while box.MessageBoxClosed() != -1 {PowerDown(3)}

        }

        else

        {

            error = error + 1   # 答错 error + 1

            # 更新答题总数、答对题数、答错题数

            gui.SendText([itoc(total),itoc(path),itoc(error),itoc(firstnum)," "+symbol,itoc(secondnum)," ="])    # 更新窗口显示

            box = GUI("box")

            box.MessageBox("答错了,继续加油!","确定")

            while box.MessageBoxClosed() != -1 {PowerDown(3)}

        }

        # 清除上次的题目

        gui.SendText([itoc(total),itoc(path),itoc(error),"","","","="])    # 更新窗口显示

        gui.SendEdit([""])   # 清除edit组件上的内容

        isNewnum = 0         # 表明当前题目已批改过

    }

}

0