python小程序---20以内的加减法进位运算
2016-05-07 21:34
387 查看
同事家的小朋友上了一年级,学校布置作业要学习20以内的加减法运算,而且必须是有进位或者减位的。
比如18-9=9 或者7+6=13
觉得专门写一堆题目没啥意思,于是用python+tkinter写个小程序,然后用cx_freeze打包成exe文件,能够随机出题,并检验回答是否正确。新手上路,难免遇到很多问题。
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
import random
def main():
a=random.randint(1,18)
if a <10:
b=random.randint(10-a,9)
c=a+b
result="%d + %d" %(a,b)
return (result,c)
if a>=10:
b=random.randint(a-9,9)
c=a-b
result="%d - %d" %(a,b)
return (result,c)
def check():
if int(result.get())==int(t[1]):
h="恭喜你!回答正确"
hint.set(h)
else:
h="抱歉!回答错误!"
hint.set(h)
result.set('')
def next():
global t
t=main()
e.set(t[0])
result.set('')
hint.set('')
master = Tk()
master.geometry('500x500+100+100')
master.title("20以内加减进退位运算")
Label(master,text="题目").grid(row=0)
Label(master,text="答案").grid(row=1)
Label(master,text="信息").grid(row=4)
e = StringVar()
result=StringVar()
hint=StringVar()
e1 = Entry(master,textvariable=e)
e2 = Entry(master,textvariable=result)
e3 = Entry(master,textvariable=hint)
t=main()
e.set(t[0])
result.get()
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=4, column=1)
btn=Button(master,text = '确定',command = check)
btn2=Button(master,text = '下一题',command = next)
btn.grid(row=2,column=2)
btn2.grid(row=2,column=4)
master.mainloop()
python版本是3.3.5,使用的cx_freeze版本是4.3.2
打包的时候一开始是使用py2exe打包的,发现总是有问题,网上都说py2exe对python3不支持之类的,于是换了cx_freeze。
结果也是遇到各种问题,还好基本都能网络上找到,到最后,打包成exe后,双击exe文件,直接弹出一个小黑框,然后一闪而过,在cmd下面执行exe文件也没有任何报错。。。
于是各种搜索是什么问题,找不到原因,于是换了Python版本,cx_freeze版本,还是这样的情况。都要放弃的时候,无意间看到有个他人的程序中加了这么一段代码:
master.mainloop()死马当活马医,结果真就弹窗了。。。
然后又有一个小问题,那就是程序可以正常显示了,但同时还有个小黑框也显示出来了。。。这个好解决,在打包exe时候,cxfreeze命令指定参数即可:
cxfreeze calc_20.py --base-name=win32gui
程序界面:
当你在答案框输入答案后,会判断答案是否正确:
如果回答错误,则会清空答案框的内容,提醒你再次回答:
回答正确后可以点击下一题,则可继续答题。
界面很丑,tkinter都是现学现弄的,但自己还是比较满意的,起码可以看到自己的进步。加油。
比如18-9=9 或者7+6=13
觉得专门写一堆题目没啥意思,于是用python+tkinter写个小程序,然后用cx_freeze打包成exe文件,能够随机出题,并检验回答是否正确。新手上路,难免遇到很多问题。
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
import random
def main():
a=random.randint(1,18)
if a <10:
b=random.randint(10-a,9)
c=a+b
result="%d + %d" %(a,b)
return (result,c)
if a>=10:
b=random.randint(a-9,9)
c=a-b
result="%d - %d" %(a,b)
return (result,c)
def check():
if int(result.get())==int(t[1]):
h="恭喜你!回答正确"
hint.set(h)
else:
h="抱歉!回答错误!"
hint.set(h)
result.set('')
def next():
global t
t=main()
e.set(t[0])
result.set('')
hint.set('')
master = Tk()
master.geometry('500x500+100+100')
master.title("20以内加减进退位运算")
Label(master,text="题目").grid(row=0)
Label(master,text="答案").grid(row=1)
Label(master,text="信息").grid(row=4)
e = StringVar()
result=StringVar()
hint=StringVar()
e1 = Entry(master,textvariable=e)
e2 = Entry(master,textvariable=result)
e3 = Entry(master,textvariable=hint)
t=main()
e.set(t[0])
result.get()
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=4, column=1)
btn=Button(master,text = '确定',command = check)
btn2=Button(master,text = '下一题',command = next)
btn.grid(row=2,column=2)
btn2.grid(row=2,column=4)
master.mainloop()
python版本是3.3.5,使用的cx_freeze版本是4.3.2
打包的时候一开始是使用py2exe打包的,发现总是有问题,网上都说py2exe对python3不支持之类的,于是换了cx_freeze。
结果也是遇到各种问题,还好基本都能网络上找到,到最后,打包成exe后,双击exe文件,直接弹出一个小黑框,然后一闪而过,在cmd下面执行exe文件也没有任何报错。。。
于是各种搜索是什么问题,找不到原因,于是换了Python版本,cx_freeze版本,还是这样的情况。都要放弃的时候,无意间看到有个他人的程序中加了这么一段代码:
master.mainloop()死马当活马医,结果真就弹窗了。。。
然后又有一个小问题,那就是程序可以正常显示了,但同时还有个小黑框也显示出来了。。。这个好解决,在打包exe时候,cxfreeze命令指定参数即可:
cxfreeze calc_20.py --base-name=win32gui
程序界面:
当你在答案框输入答案后,会判断答案是否正确:
如果回答错误,则会清空答案框的内容,提醒你再次回答:
回答正确后可以点击下一题,则可继续答题。
界面很丑,tkinter都是现学现弄的,但自己还是比较满意的,起码可以看到自己的进步。加油。
相关文章推荐
- python基础之函数进阶之函数作为返回值/装饰器
- 用python爬虫爬HRBUSTOJ代码
- python中的赋值
- python 文件读写项目实践
- python 参数传递[打包与解包问题]
- DayDayUP_Python自学教程[12]_Python正则表达式
- python numpy
- python的一些函数
- Python/Pelican搭建自己个人博客
- ipyhon 与 ipython notebook
- Python为什么不隐式实现self
- Python核心编程 第八章练习
- python生成随机数方法小结
- Python字符串操作汇总
- python爬虫抓取51cto博客大牛的文章保存到本地excel文件
- python logging 日志轮转文件不删除问题
- Python对list列表结构中的值进行去重的方法总结
- python 学习笔记 8(闭包)
- Python环境下安装使用异步任务队列包Celery的基础教程
- urllib&urllib2库--python2.X(学习日记1)