• 四则运算


    Github项目地址

     

    解题思路描述:

    (1) 思考如何随机生成四则运算表达式

    (2) 查阅相关博客,了解效能分析所用工具

    (3) 学习所用到的类库

    函数说明:

      def s() #按钮事件,判断整数部分答案是否正确

      def s1() #按钮事件,判断真分数部分答案是否正确

      def s2() #按钮事件,关闭窗口

      def f() #计算整数部分的算式及答案 

      def f1() #计算真分数部分的算式及答案 

    测试结果:

    初始:

    正确:

    错误:

    代码:

    import tkinter
    import random
    from fractions import Fraction
    
    m=['+','-','×','÷']
    nn='0'
    
    window = tkinter.Tk()
    window.title('四则运算')
    window.geometry('300x150')
    m1=tkinter.StringVar()
    m1.set('')
    m2=tkinter.StringVar()
    m2.set('')
    m3=tkinter.StringVar()
    m3.set('')
    m4=tkinter.StringVar()
    m4.set('')
    name=tkinter.Label(text='算式:',justify=tkinter.RIGHT,width=80)
    name.place(x=5,y=5,width=80,height=20)
    m1name=tkinter.Label(width=80,textvariable=m1)
    m1name.place(x=60,y=5,width=80,height=20)
    en=tkinter.Entry(width=80,textvariable=m3)
    en.place(x=180,y=5,width=80,height=20)
    name2=tkinter.Label(text='结果:',justify=tkinter.RIGHT,width=80)
    name2.place(x=5,y=30,width=80,height=20)
    m2name=tkinter.Label(width=80,textvariable=m2)
    m2name.place(x=60,y=30,width=80,height=20)
    name3=tkinter.Label(text='答案:',justify=tkinter.RIGHT,width=80)
    name3.place(x=5,y=60,width=80,height=20)
    m4name=tkinter.Label(width=80,textvariable=m4)
    m4name.place(x=75,y=60,width=50,height=20)
    
    def s():
        b['text']='下一题'
    
        m1.set('')
        m2.set('')
        m3.set('')
        m4.set('')
        mm = f()
        a = mm
        def g(a):
            nn = en.get()
            if str(nn) == str(mm):
                m2.set('正确')
            else:
                m2.set('错误')
                m4.set(mm)
        en.bind('<Key-Return>', g)
    def s1():
        b['text'] = '开始'
        b2['text']='下一题'
        m1.set('')
        m2.set('')
        m3.set('')
        m4.set('')
        mm = f2()
        a=mm
        def g(a):
            nn = en.get()
            if str(nn) == str(mm):
                m2.set('正确')
            else:
                m2.set('错误')
                m4.set(mm)
        en.bind('<Key-Return>', g)
    
    def s2():
        window.destroy()
    b=tkinter.Button(text='开始',command=s)
    b.place(x=60,y=90,width=50,height=20)
    
    b1=tkinter.Button(text='关闭',command=s2)
    b1.place(x=180,y=90,width=50,height=20)
    
    def f():
        f=random.randint(0,3)
        n1=random.randint(1,10)
        n2=random.randint(1,10)
        r = 0
        if f==0:
            r=n1+n2
        elif f==1:
            n1,n2=max(n1,n2),min(n1,n2)
            r=n1-n2
        elif f==2:
            r=n1*n2
        elif f==3:
            if n1==n2:
                r=1
            else:
                n1, n2 = max(n1, n2), min(n1, n2)
                if n2==1:
                    r=n1
                else:
                    while n1 % n2 != 0:
                        n1 = random.randint(1, 10)
                        n2 = random.randint(1, 10)
                        n1, n2 = max(n1, n2), min(n1, n2)
                        r = int(n1 / n2)
        a=str(n1)+str(m[f])+str(n2)+'='
        m1.set(a)
        return r
    
    def f2():
        q = []
        f = random.randint(0, 3)
        t1 = random.randint(0, 20)
        t2 = random.randint(t1, 20)
        a = Fraction(t1, t2)
        t1 = random.randint(0, 20)
        t2 = random.randint(t1, 20)
        b = Fraction(t1, t2)
        if f==0:  # 加法
            q.append(a + b)
            q.append(str(a)+m[f]+str(b))
            m1.set(q[1])
            return q[0]
        elif f==1:  # 减法
            if a < b:
                tm = a
                a = b
                b = tm
            q.append(a - b)
            q.append(str(a) + m[f] + str(b))
            m1.set(q[1])
            return q[0]
        elif f==2:  # 乘法
            q.append(a * b)
            q.append(str(a) + m[f] + str(b))
            m1.set(q[1])
            return q[0]
        else:  # 除法
            c = Fraction(a, b)
            q.append(str(c))
            q.append(str(a) + m[f] + str(b))
            m1.set(q[1])
            return q[0]
    
    window.mainloop()

    性能分析:

    这个程序通过使用cProfile和time模块来测试程序的性能

  • 相关阅读:
    彻底卸载网易UU网游加速器的方法
    OO之策略模式
    android锁屏和finish()后activity生命周期的变化
    ARTS打卡计划第6周-TIPS-多台服务器免密码登录
    ARTS打卡计划第6周-REVIEW-超越编码的避免项目失败的软技能
    ARTS打卡计划第6周-ALGORITHM
    ARTS打卡计划第5周-SHARE-java构建树形结构
    ARTS打卡计划第5周-TIPS
    ARTS打卡计划第5周-REVIEW-SpringBoot的api版本化实践
    ARTS打卡计划第5周-ALGORITHM
  • 原文地址:https://www.cnblogs.com/ggzjf/p/8884175.html
Copyright © 2020-2023  润新知