老妹说太无聊,我用python给她做了个小玩具,她开心极了

目录

 

起因

代码

改进

截图

结语


起因

每天睡着睡着就被老妹的无情大嗓子把我跟周公的女儿无情的分开了,为此我感激涕零。因为正值疫情期间,学生只能在家看网课,联想到昨晚教她加减法,无情的我花了两个小时给她做了个加减法题目大全,并跟老妈说这是学校要求的每天必须做几题,要好好监督!!

代码

from tkinter import *
from tkinter.messagebox import *
import random
 
def answer():
    global results,b1
    if b1==None:
        b1 = Toplevel()
        b1.title('答案')
        winWidth = 250
        winHeight = 600
        screenWidth = b1.winfo_screenwidth()
        screenHeight = b1.winfo_screenheight()
        x = int((screenWidth - winWidth) / 2)
        y = int((screenHeight - winHeight) / 2)
        # 设置窗口初始位置在屏幕居中
        b1.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x+430, y))
        # 设置窗口宽高固定
        b1.resizable(0, 0)
        result=results
#         print(result)
        results=""
        j=0
        for i in result:
            j+=1
            results+="   "+str(i)+"   "
            if j==3:
                Label(b1,font=("微软雅黑", 20),text=results).pack()
                j=0
                results=""
    else:
        pass
    
def range_num_10():
    """
    返回小于10的数
    """
    return random.randint(0,11)

def range_num_100():
    """
    返回小于100的数
    """
    return random.randint(0,101)

def range_ope():
    """
    返回操作符
    """
    a=random.randint(0,100)
    if a%2==0:
        return "+"
#     elif a%3==0:
#         return "X"
#     elif a%7==0:
#         return "÷"
    else:
        return "-"
    
def timu():
    global results
    result=[]
    for i in range(1,12):
        j=range_num_100()
        k=str(range_ope())
        l=range_num_10()
        a=0
        if k=="+":
            a=j+l
            result.append(a)
        else:
            a=j-l
            result.append(a)
        Label(root,font=("微软雅黑", 20),text=str(j)+k+str(l)+"=").grid(row=i,column=0)
        Entry(root,font="Helvetica 13 bold", bd =5,width=8).grid(row=i,column=1)

        j=range_num_100()
        k=str(range_ope())
        l=range_num_10()
        a=0
        if k=="+":
            a=j+l
            result.append(a)
        else:
            a=j-l
            result.append(a)
        Label(root,font=("微软雅黑", 20),text=str(j)+k+str(l)+"=").grid(row=i,column=2)
        Entry(root,font="Helvetica 13 bold", bd =5,width=8).grid(row=i,column=3)
        
        j=range_num_100()
        k=str(range_ope())
        l=range_num_10()
        a=0
        if k=="+":
            a=j+l
            result.append(a)
#         elif k=="X":
#             a=j*l
#             result.append(a)
#         elif k=="÷":
#             if l!=0:
#                 a=j/l
#                 result.append(a)
        else:
            a=j-l
            result.append(a)
        Label(root,font=("微软雅黑", 20),text=str(j)+k+str(l)+"=").grid(row=i,column=4)
        Entry(root,font="Helvetica 13 bold", bd =5,width=8).grid(row=i,column=5)
#     print(result)
    Button(text='查看答案', bd =5,width=10,command=answer).grid(row=13,column=1)
    Button(text='刷新题目', bd =5,width=10,command=del_all).grid(row=13,column=4)
    results=result
    
def del_all(): 
    """
    清空控件并刷新题目
    """
    global b1
    for widget in root.winfo_children():
        widget.destroy()
    timu()
    b1=None

root = Tk() 
root.title('小学一年级加减法') 
winWidth = 600
winHeight = 600
screenWidth = root.winfo_screenwidth()
screenHeight = root.winfo_screenheight()
x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)
# 设置窗口初始位置在屏幕居中
root.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 窗口小图标
# # root.iconbitmap("./image/icon.ico")
# # 设置窗口宽高固定
root.resizable(0, 0)
global results,b1
b1=None
timu()
root.mainloop() 

改进

  1. 可以给查看答案按钮加个查看条件(比如:和尚吃馒头(中国古题) ---大和尚每人吃4个,小和尚4人吃1个。有大小和尚100人,共吃了100个馒头。大、小和尚各几人?各吃 多少馒头?),防止一上来就打开答案看
  2. 加个自动检测答案是否正确(有点难度,没写了)
  3. 目前只弄了两位数加减一位数,但是代码已经写好了,很容易可以改成随意位数的加减,乘除也在代码当中,不过已经注释掉了

截图

结语

我已经将该软件打包,附带源码,有需要的同学找我获取哦

发布了21 篇原创文章 · 获赞 14 · 访问量 4096

猜你喜欢

转载自blog.csdn.net/Cxk___/article/details/104296383