python小程序---20以内的加减法进位运算

同事家的小朋友上了一年级,学校布置作业要学习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都是现学现弄的,但自己还是比较满意的,起码可以看到自己的进步。加油。

时间: 2024-08-08 22:46:21

python小程序---20以内的加减法进位运算的相关文章

Python小程序练习二之装饰器小例子

Python小程序练习二之装饰器小例子 装饰器: 装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 那么根据需求,同时满足了这两点原则,这才是我们的目的. 装饰器的原则组成: < 函数+实参高阶函数+返回值高阶函数+嵌套函数+语法糖 = 装饰器 > 错误例子: 1.1Decorators.py 1 # The aut

python小程序之一

来个Python小程序 #输入年月日确定这个日期是一年中的第多少天# -*- coding: UTF-8 -*-y=int(raw_input("请输入年:"))m=int(raw_input("请输入月份:"))d=int(raw_input("请输入日期:"))a=(0,31,28,31,30,31,30,31,31,30,31,30,31)if m>12: raise ValueError("输入月份错误")if

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

Python 小程序,对文件操作及其它

以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行进行操作: #这里列出两个经常使用的方法 方法01: 一次性读取全部行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print

第一个python小程序,2进制转10进制

#Bin to Dec #my first python programe n = c = itm = 0 a = raw_input('please input Binary number:\n') for n in range(0,len(a)):    b = a[n:n+1] #   print 'n is', n #   print 'b is',b #   print 'len',len(a[n:])       if b == '1':    c = 2**(len(a[n:])-

Python小程序,读取ACCESS数据库,然后list数据

曾经做过的一个Python小程序,读取ACCESS数据库,然后list数据 # -*- coding: cp936 -*-import wximport wx.libimport sys,glob,randomimport win32com.clientreload(sys)sys.setdefaultencoding('utf-8')class DemoFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,u"安

一个有意思的Python小程序(全国省会名称随机出题)

最近比较迷Python,仿照<Python编程快速上手>8.5写了一个随机出卷的小程序.程序本身并不难,关键是解决问题的思路,还有就是顺便复习了一下全国地名(缅怀一下周总理). OK其实还是有一个难点的,就是关于Python的中文编码问题,如何把中文字典输入到txt然后再把它读出来,程序中借用了json方法,而且在输出时decode.encode,有一些参考的价值吧.废话不说了,上程序. # *encoding:utf-8 * from __future__ import print_func

每天一个 Python 小程序

@易枭寒 正在 GitHub 写一个 Python 相关的开源项目. 项目地址: https://github.com/Yixiaohan/show-me-the-code (可点击本文最下方的“阅读原文”直接进入) 项目介绍: Python 练习册,每天一个小程序. 当然其中的很多题目对于其他编程语言也是适用的. 想法灵感来源于,学生时代的 100 个 C 语言练习题目. 项目的初衷,旨在让更多的人学习.使用 Python. 而不是像 100 个 C 语言练习题目中某些题目「不实用」,比如说打

Python小程序代码片

用于记录自己写的,或学习期间看到的不错的,小程序,持续更新...... **************************************************************** [例001]计算:1-2+3-4..+199-200值 #encoding=utf-8 #计算 1-2+3-4..+199-200值 #1+3+5+7+...199 #-2-4-6...-200 sum1 = 0 sum2 = 0 for i in range(1,200,2): #计算1+3+5