# 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 # 表明当前题目已批改过
}
}