混合计算器编辑9.0

功能

⬇⬇⬇

1、平面图形面积计算

2、立体图形体积计算

3、普通算术计算

4、密码

5、爬虫

原代码

⬇⬇⬇

import easygui as e
import turtle as t
import math
import requests as r
import tkinter
while True:
    x = e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '退出':
        break
    if x == '算术计算器':
        d = e.buttonbox('请选择你要使用的算数方法\n加法符号:+\n减法符号:-\n乘法符号:*\n除法符号/\n整除符号://\n取余符号:%\n次方符号:**','',['加法','减法','乘法','除法','整除','取余','次方','开方','高级选项','返回'])
        if d == '加法':
            r = e.enterbox('请输入你要ac算的算式')
            a = r.split('+')
            b = float(a[0])
            c = float(a[1])
            d = c + b
            e.msgbox(d)
            continue
            f.write('加法')
        elif d == '减法':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('-')
            b = float(a[0])
            c = float(a[1])
            d = b - c
            e.msgbox(d)
            continue
            f.write('减法')
        elif d == '次方':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('**')
            d = float(a[0]) ** float(a[1])
            e.msgbox(d)
            continue
            f.write('次方')
        elif d == '乘法':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('*')
            d = float(a[0]) * float(a[1])
            e.msgbox(d)
            continue
            f.write('乘法')
        elif d == '整除':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('//')
            d = divmod(int((a[0])),(int(a[1])))
            e.msgbox('第一个数是商,第二个数是余数',d)
            continue
            f.write('整除')
        elif d == '取余':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('%')
            d = float(a[0]) % float(a[1])
            e.msgbox(d)
            continue
            f.write('取余')
        elif d == '除法':
            r = e.enterbox('请输入你要算的算式')
            a = r.split('/')
            d = float(a[0]) / float(a[1])
            e.msgbox(d)
            f.write('除法')
        elif d == '开方':
            g = int(e.enterbox('请输入你要开方的数'))
            h = g ** 0.5
            e.msgbox(h)
            f.write('开方')
        elif d == '高级选项':
            a = e.buttonbox('欢迎来到高级选项','',['公倍数','公因(约)数','四舍五入','列出因数','勾股定理','鸡兔同笼','折扣计算','转换进制','长度转换','重量转换','四则混合计算','列表排序','画图计算','返回'])
            if a == '公因(约)数':
                f = []
                c = int(e.enterbox('请输入第一个数'))
                d = int(e.enterbox('请输入第二个数'))
                g = min(c,d)
                for i in range(1, g + 1):
                    if c % i == 0 and d % i ==0:
                        f.append(i)
                e.msgbox(f)
            if a == '四舍五入':
                y = float(e.enterbox('请输入你需要四舍五入的数'))
                b = int(e.enterbox('请输入你要精确到第几位'))
                g = round(y,b)
                e.msgbox(g)
            if a == '公倍数':
                f = []
                c = int(e.enterbox('请输入第一个数'))
                d = int(e.enterbox('请输入第二个数'))
                g = min(c,d)
                for i in range(1, g + 1):
                    if c % i == 0 and d % i ==0:
                        r = i
                v = c // r
                x = d // r
                h = v * x * r
                e.msgbox(h)
            if a == '列出因数':
                c = int(e.enterbox('请输入需要分解的数(请小于10位数)\n100内的素数有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97'))
                d = []
                for i in range(c + 1):
                    if c % (i + 1) == 0:
                        d.append(i + 1)
                e.msgbox(d)
            if a == '勾股定理':
                c = int(e.enterbox('请输入第一条边的长度'))
                b = int(e.enterbox('请输入第二条边的长度'))
                n = c ** 2 + b ** 2
                m = math.sqrt(n)
                e.msgbox(m)
            if a == '鸡兔同笼':
                g = int(e.enterbox('请输入总头数'))
                h = int(e.enterbox('请输入总脚数'))
                flag = False
                for ji in range(0,g + 1):
                    tu = g - ji
                    if ji * 2 + tu * 4 == h:
                        e.msgbox('鸡有' + str(ji) + '只,兔有' + str(tu) + '只')
                        flag = True
            if a == '折扣计算':
                b = e.enterbox('请输入你要打折的数')
                c = int(e.enterbox('请输入你要打的折数(请用数字,例:95,80)'))
                c /= 100
                d = float(b) * float(c)
                e.msgbox(d)
            if  a == '转换进制':
                b = int(e.enterbox('请输入原数的进制(只支持2,8,10,16进制)'))
                c = int(e.enterbox('请输入转换后的进制'))
                n = e.enterbox('请输入原数')
                if b == 2 and c == 10:
                    e.msgbox(int(n,base = 2))
                if b == 2 and c == 8:
                    e.msgbox(oct(int(n,base = 2)))
                if b == 2 and c == 16:
                    e.msgbox(hex(int(n,base = 2)))
                if b == 8 and c == 10:
                    e.msgbox(int(n,base = 8))
                if b == 8 and c == 2:
                    e.msgbox(bin(int(n,base = 8)))
                if b == 8 and c == 16:
                    e.msgbox(hex(int(n,base = 8)))
                if b == 10 and c == 8:
                    e.msgbox(oct(int(n)))
                if b == 10 and c == 2:
                    e.msgbox(bin(int(n)))
                if b == 10 and c == 16:
                    e.msgbox(hex(int(n)))
                if b == 16 and c == 8:
                    e.msgbox(oct(int(n,16)))
                if b == 16 and c == 2:
                    e.msgbox(bin(int(n,16)))
                if b == 16 and c == 10:
                    e.msgbox(hex(int(n,16)))
            if a == '长度转换':
                b = e.enterbox('请输入原数单位(仅支持纳米、微米、毫米、厘米、米、公里)')
                d = int(e.enterbox('请输入原数'))
                c = e.enterbox('请输入改后单位')
                if b == '纳米':
                    if c == '微米':
                        d = d / 1000
                    if c == '毫米':
                        d = d / 1000000
                    if c == '厘米':
                        d = d / 10000000
                    if c == '米':
                        d = d / 1000000000
                    if c == '公里':
                        d = d / 1000000000000
                if b == '微米':
                    if c == '纳米':
                        d = d * 1000
                    if c == '毫米':
                        d = d / 1000
                    if c == '厘米':
                        d = d / 10000
                    if c == '米':
                        d = d / 1000000
                    if c == '公里':
                        d = d / 1000000000
                elif b == '毫米':
                    if c == '纳米':
                        d = d * 1000000
                    if c == '微米':
                        d = d * 1000
                    if c == '厘米':
                        d = d / 10
                    if c == '米':
                        d = d / 1000
                    if c == '公里':
                        d = d / 1000000
                elif b == '米':
                    if c == '微米':
                        d = d * 1000000000
                    if c == '毫米':
                        d = d * 1000
                    if c == '厘米':
                        d = d * 100
                    if c == '纳米':
                        d = d * 1000000000
                    if c == '公里':
                        d = d / 1000
                elif b == '公里':
                    if c == '微米':
                        d = d * 1000000000
                    if c == '毫米':
                        d = d * 1000000
                    if c == '厘米':
                        d = d * 100000
                    if c == '纳米':
                        d = d * 1000000000000
                    if c == '米':
                        d = d * 1000
                else:
                    e.msgbox("您输入的没有添加(仅支持纳米、微米、毫米、厘米、米、公里)")
                e.msgbox(d)
            if a == '重量转换':
                a = e.enterbox('输入原单位(仅支持克、千克、吨)')
                b = int(e.enterbox('请输入原数'))
                c = e.enterbox('请输入改后单位')
                if a == '克':
                    if c == '千克':
                        b = b / 1000
                    if c == '吨':
                        b = b / 1000000
                elif a == '千克':
                    if c == '克':
                        b = b * 1000
                    if c == '吨':
                        b = b / 1000
                elif a == '吨':
                    if c == '克':
                        b = b * 1000000
                    if c == '千克':
                        b = b * 1000
                else:
                    e.msgbox('输入有误!!!')
                e.msgbox(b)
            if a == '四则混合计算':
                n = eval(e.enterbox('请输入混合式(将输入英文字母)'))
                e.msgbox("结果为:" + str(n))
            if a == '列表排序':
                d = e.enterbox('输入数据请用英文逗号隔开')
                d = d.split(",")
                for i in range(len(d)):
                    d[i] = int(d[i])
                e.msgbox(sorted(d))
            if a == '画图计算':

                e.msgbox('如果一会儿计算器弹出只有点\n\n右上角的×才能返回主界面')
                window = tkinter.Tk()
                window.title("计算器")
                expstr = ""
                history_label_obj_list = []
                def onClick(key):
                
                    global  expstr
                    if key == "=":
                        jieguo = round(eval(expstr), 2)
                        result["text"] = jieguo
                        frame_right.pack()
                        t = tkinter.Label(frame_inner, text=expstr + "=" + str(jieguo),
                                            background="seashell")
                        t.pack()
                
                        history_label_obj_list.append(t)
                    elif key == "AC":
                        result["text"] = ""
                        expstr = ""
                    else:
                        expstr = expstr + str(key)
                        result["text"] = expstr
                frame_grap = tkinter.Frame(window)
                frame_grap.pack(fill="y", side="left")
                frame_left = tkinter.Frame(window)
                result = tkinter.Label(frame_left, bg="seashell", text="0", height=2,font=("Arial", 34, "bold"))
                result.grid(row=0, column=0, columnspan=4, sticky=tkinter.E)
                ac = tkinter.Button(frame_left, text="AC", width=6, height=2, command=lambda: onClick("AC"))
                ac.grid(row=1,column=0)
                negative = tkinter.Button(frame_left, text="+/-", width=6, height=2, command=lambda: onClick("-"))
                negative.grid(row=1,column=1)
                percent = tkinter.Button(frame_left, text="%", width=6, height=2, command=lambda: onClick("/100"))
                percent.grid(row=1,column=2)
                division = tkinter.Button(frame_left, text="/", width=6, height=2, command=lambda: onClick("/"))
                division.grid(row=1,column=3)
                num7 = tkinter.Button(frame_left, text="7", width=6, height=2, command=lambda: onClick(7))
                num7.grid(row=2,column=0)
                num8 = tkinter.Button(frame_left, text="8", width=6, height=2, command=lambda: onClick(8))
                num8.grid(row=2,column=1)
                num9 = tkinter.Button(frame_left, text="9", width=6, height=2, command=lambda: onClick(9))
                num9.grid(row=2,column=2)
                multi = tkinter.Button(frame_left, text="*", width=6, height=2, command=lambda: onClick("*"))
                multi.grid(row=2,column=3)
                num4 = tkinter.Button(frame_left, text="4", width=6, height=2, command=lambda: onClick(4))
                num4.grid(row=3,column=0)
                num5 = tkinter.Button(frame_left, text="5", width=6, height=2, command=lambda: onClick(5))
                num5.grid(row=3,column=1)
                num6 = tkinter.Button(frame_left, text="6", width=6, height=2, command=lambda: onClick(6))
                num6.grid(row=3,column=2)
                sub = tkinter.Button(frame_left, text="-", width=6, height=2, command=lambda: onClick("-"))
                sub.grid(row=3,column=3)
                num1 = tkinter.Button(frame_left, text="1", width=6, height=2, command=lambda: onClick(1))
                num1.grid(row=4,column=0)
                num2 = tkinter.Button(frame_left, text="2", width=6, height=2, command=lambda: onClick(2))
                num2.grid(row=4,column=1)
                num3 = tkinter.Button(frame_left, text="3", width=6, height=2, command=lambda: onClick(3))
                num3.grid(row=4,column=2)
                add = tkinter.Button(frame_left, text="+", width=6, height=2, command=lambda: onClick("+"))
                add.grid(row=4,column=3)
                num0 = tkinter.Button(frame_left, text="0", width=12, height=2, command=lambda: onClick(0))
                num0.grid(row=5,column=0,columnspan=2)
                point = tkinter.Button(frame_left, text=".", width=6, height=2, command=lambda: onClick("."))
                point.grid(row=5,column=2)
                equals = tkinter.Button(frame_left, text="=", width=6, height=2, command=lambda: onClick("="))
                equals.grid(row=5,column=3)
                frame_left.pack(fill="y", side="left")
                frame_right = tkinter.Frame(window, width=200)
                tkinter.Label(frame_right, text="运算历史", font=("仿宋", 14,)).pack()
                frame_inner = tkinter.Frame(frame_right)
                frame_inner.pack(fill="x", side="top")
                def clean_history():
                
                    for x in history_label_obj_list:
                        x.destroy()
                cls_button = tkinter.Button(frame_right, text="清空", command=lambda: clean_history())
                cls_button.pack(fill="x", side="top")
                window.mainloop()
                                
                                
                                
            if a == '返回':
                e.buttonbox('请选择你要使用的算数方法\n加法符号:+减法符号:-\n乘法符号:*除法符号/\n整除符号://取余符号:%次方符号:**','',['加法','减法','乘法','除法','整除','取余','次方','开方','高级选项','返回'])
        elif d == '返回':
            e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
        else:
            pass
    if x == '平面图形面积计算器':
        a = e.buttonbox('请选择你需要算的图形种类','平面图形面积计算器',['正方形','长方形','圆形','梯形','三角形','平行四边形','自定义','弧长','扇形','返回'])
        if a == '自定义':
            h = None
            if a == '自定义':
                g = int(e.enterbox('你自定义图形有几个点?\n请输入一个整数。\n(请输入3个点或3个点以上,\n当你输入最后一个点的时候,系统会自动\n把你输入的最后一个点与起始点相连)(此系统未完善)'))
                p = []
                for i in range(g):
                    n = i + 1
                    pos = e.enterbox('请以x,y坐标的格式(英文逗号)输入\n请输入第' + str(n) + '的坐标')
                    pos = eval(pos)
                    p.append(pos)
                    print(p)
                    x,y = pos[0],pos[1]
                    if n == 1:
                        t.up()
                        t.goto(x,y)
                        t.down()
                    if n == g:
                        t.goto(x,y)
                        t.goto(p[0])
                    else:
                        t.goto(x,y)
        if a == '正方形':
            b = int(e.enterbox('请你输入正方形的边长'))
            c = b ** 2
            e.msgbox('边长为' + str(b) + '的正方形面积为' + str(c))
        if a == '圆形':
            b = int(e.enterbox('请你输入圆形的半径'))
            c = b * b * 3.14
            e.msgbox('半径为' + str(b) + '的圆形面积为' + str(c))
        if a == '长方形':
            b = int(e.enterbox('请你输入长方形的长'))
            c = int(e.enterbox('请你输入长方形的宽'))
            f = b * c
            e.msgbox('长为' + str(b) + '、宽为' + str(c) + '的长方形面积为' + str(f))
        if a == '平行四边形':
            b = int(e.enterbox('请你输入平行四边形的高'))
            c = int(e.enterbox('请你输入平行四边形的底'))
            f = b * c
            e.msgbox('高为' + str(b) + '、底为' + str(c) + '的平行四边形面积为' + str(f))
        if a == '三角形':
            b = int(e.enterbox('请你输入三角形的高'))
            c = int(e.enterbox('请你输入三角形的底'))
            f = b * c / 2
            e.msgbox('高为' + str(b) + '、底为' + str(c) + '的三角形面积为' + str(f))
        if a == '梯形':
            b = int(e.enterbox('请你输入梯形的高'))
            c = int(e.enterbox('请你输入梯形的上底'))
            d = int(e.enterbox('请你输入梯形的下底'))
            f = (d + c) * b / 2
            e.msgbox('高为' + str(b) + '、上底为' + str(c) + '、下底为' + str(d)+'的梯形面积为' + str(f))
        if a == '弧长':
            n = float(e.enterbox('请输入弧长所在圆的角度'))
            v = float(e.enterbox('请输入弧长所在圆的半径'))
            x = (n * v * 3.14) / 180
            e.msgbox(x)
        if a == '扇形':
            n = float(e.enterbox('请输入扇形所在圆的角度'))
            v = float(e.enterbox('请输入扇形所在圆的半径'))
            x = n * 3.14 * (v ** 2) / 180
            e.msgbox(x)
        if a == '返回':
            e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '立体图形体积计算器':
        a = e.buttonbox('请选择你需要算的图形种类','立体图形计算器',['长方体','正方体','圆柱体','圆锥体','棱锥','返回'])
        if a == '长方体':
            b = int(e.enterbox('请输入长方体的长'))
            c = int(e.enterbox('请输入长方体的宽'))
            d = int(e.enterbox('请输入长方体的高'))
            f = b * c * d
            e.msgbox('你要算的长方体的体积是' + str(f))
        if a == '正方体':
            b = int(e.enterbox('请输入正方体的边长'))
            f = b ** 3
            e.msgbox('你要算的正方体的体积是' + str(f))
        if a == '圆柱体':
            b = int(e.enterbox('请输入圆柱体底面圆形的半径'))
            d = int(e.enterbox('请输入圆柱体的高'))
            c = b * b * 3.14 * d
            e.msgbox('圆柱形体积为' + str(c))
        if a == '圆锥体':
            b = int(e.enterbox('请输入圆锥体底面圆形的半径'))
            d = int(e.enterbox('请输入圆锥体的高'))
            c = (b * b * 3.14 * d) / 3
            e.msgbox('圆锥体的体积为' + str(c))
        if a == '棱锥':
            b = int(e.enterbox('请输入棱锥锥体底面长方形的长'))
            g = int(e.enterbox('请输入棱锥锥体底面长方形的宽'))
            d = int(e.enterbox('请输入棱锥体的高'))
            c = (b * g * d) / 3
            e.msgbox('棱锥体的体积为' + str(c))
        if a == '返回':
            e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '密码':
        a = e.buttonbox('请选择你的密码种类','',['凯撒密码器','恩尼格玛器','返回'])
        if a == '凯撒密码器':
            k = e.buttonbox('请选择你要加密还是解密','凯撒密码器',['加密','解密','返回'])
            if k == '加密':
                s = e.enterbox('请输入明文')
                s = list(s)
                k = int(e.enterbox('请输入密钥'))
                for i in range(len(s)):
                    t = ord(s[i]) + k
                    if t > ord('z'):
                        t -= 26
                    s[i] = chr(t)
                e.msgbox(''.join(s))
            if k == '解密':
                s = e.enterbox('请输入明文')
                s = list(s)
                k = int(e.enterbox('请输入密钥'))
                for i in range(len(s)):
                    t = ord(s[i]) - k
                    if t < ord('z'):
                        t += 26
                    s[i] = chr(t)
                e.msgbox(''.join(s))
            if k == '返回':
                e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '恩尼格玛器':
        k = e.buttonbox('请选择你要加密还是解密','恩尼格玛器',['加密','解密','返回'])
        if k == '加密':
            s = e.enterbox('请输入明文')
            s = list(s)
            k = int(e.enterbox('请输入密钥'))
            for i in range(len(s)):
                t = ord(s[i]) + k
                if t > ord('z'):
                    t -= 26
                s[i] = chr(t)
                k += 1
            e.msgbox(''.join(s))
        if k == '解密':
            s = e.enterbox('请输入明文')
            s = list(s)
            k = int(e.enterbox('请输入密钥'))
            for i in range(len(s)):
                t = ord(s[i]) - k
                if t < ord('z'):
                    t += 26
                s[i] = chr(t)
                k += 1
            e.msgbox(''.join(s))
        if k == '返回':
            e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '爬虫':
        p = e.buttonbox('如果访问网站则会弹出原代码','',['访问网站','退出'])
        if p == '访问网站':
            try:
                i = e.enterbox("输入网页地址")
                g = e.buttonbox("选择编码方式",'',['GBK','utf-8','unicode'])
                r.encoding = g
                res = r.get(i)
                e.msgbox("------------ \n\n" + res.text + "\n\n------------")
            except Exception as k:
                e.msgbox("出现异常,报错信息如下:   " + str(k))
        elif p == '退出':
            e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])
    if x == '迭代日志':
        e.msgbox('''                            混合计算器迭代日志
                    混合计算器1.0:算数计算器
                    混合计算器1.1:算数计算器高级选项
                    混合计算器2.0:平面图形计算器
                    混合计算器2.1:平面图形计算器自定义
                    混合计算器3.0:立体图形计算器
                    混合计算器4.0:更改页面顺序
                    混合计算器5.0:密码
                    混合计算器6.0:爬虫
                    混合计算器7.0:增加算数计算器高级选项
                    混合计算器7.1:修复bug
                    混合计算器8.0:写迭代日志
                    混合计算器8.1:迭代日志重写
                    混合计算器9.0:增加画图计算功能(tkinter)
                    混合计算器9.1:迭代日志重写''')
    if x == '返回':
        e.buttonbox('请选择你要使用的计算器','',['平面图形面积计算器','立体图形体积计算器','算术计算器','密码','爬虫','迭代日志','退出'])

到这儿就结束了,感谢大家支持!

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值