• 实验二 计算器设计


    # 学号 2020-2021-2 《Python程序设计》实验二报告


    课程:《Python程序设计》
    班级: 1913
    姓名: 施羿
    学号:20191325
    实验教师:王志强
    实验日期:2021年5月7日
    必修/选修: 公选课

    ## 1.实验内容

    • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

    • 考核基本语法、判定语句、循环语句、逻辑运算等知识点


    ## 2. 实验过程及结果

    """
    作者:施羿
    文件名:计算器
    时间:2021年5月7日
    """
    import math


    # 表达式运算
    def test(date):
    result = eval(date) #eval用于执行字符串表达式,返回值
    return result


    # 加法
    def add(a, b):
    return a + b


    # 减法
    def minus(a, b):
    return a - b


    # 乘法
    def mul(a, b):
    return a * b


    # 除法
    def div(a, b):
    if b == 0:
    print("Error")
    else:
    return a / b


    # 求模
    def mod(a, b):
    return a % b


    # 幂运算
    def power(a, b):
    return a ** b


    while True:
    print("计算器")
    i = int(input("基本运算输1,表达式运算输2,高级功能输3,输0退出 请输入:"))
    if i == 1:
    print("1:加法 2:减法 3:乘法 4:除法 5:求模 6:幂运算 ")
    s = int(input("请输入运算方法:"))
    n1 = float(input("请输入第一个数:"))
    n2 = float(input("请输入第二个数:"))
    print("结果为:")
    if s == 1:
    print(add(n1, n2))
    if s == 2:
    print(minus(n1, n2))
    if s == 3:
    print(mul(n1, n2))
    if s == 4:
    print(div(n1, n2))
    if s == 5:
    print(mod(n1, n2))
    if s == 6:
    print(power(n1, n2))
    elif i == 2:
    print("支持加减乘除和求模(%)与幂函数(**) 示例:3+4-(3-2)**2")
    m = input("请输入表达式:")
    print("结果为:", test(m))
    elif i == 3:
    print("1:对数函数 2:开方 3:向下取整 4:向上取整 5:弧度转换角度 6:角度转换弧度 7:正弦函数 8:余弦函数 9:正切函数 10:最大公约数")
    s = int(input("请输入运算方法:"))
    if s == 1:
    print("对数运算")
    n3 = float(input("请输入运算数:"))
    n4 = float(input("请输入底数:"))
    print("结果为:", math.log(n3, n4))
    elif s == 10:
    print("最大公约数")
    n5 = float(input("请输入第一个运算数:"))
    n6 = float(input("请输入第二个运算数:"))
    print("结果为:", math.gcd(n5, n6))
    elif 2 <= s <= 9:
    n7 = float(input("请输入运算数(三角函数仅输入弧度制pi前的系数):"))
    if s == 2:
    print("开方运算 结果为:", math.sqrt(n7))
    if s == 3:
    print("向下取整 结果为:", math.trunc(n7))
    if s == 4:
    print("向上取整 结果为:", math.ceil(n7))
    if s == 5:
    print("弧度转换角度 结果为:", math.degrees(n7))
    if s == 6:
    print("角度转换弧度 结果为:", math.radians(n7))
    if s == 7:
    print("正弦函数 结果为:", math.sin(math.pi*n7))
    if s == 8:
    print("余弦函数 结果为:", math.cos(math.pi*n7))
    if s == 9:
    print("正切函数 结果为:", math.tan(math.pi*n7))
    elif i == 0:
    break
    entry = ttk.Entry(win, justify="right", font=1)
    entry.grid(row=0, column=0, columnspan=6, padx=20, pady=5)
    b0 = ttk.Button(win, text='0', command=lambda: get(entry, '0'))
    b0.grid(column=1, row=4)
    b1 = ttk.Button(win, text='1', command=lambda: get(entry, '1'))
    b1.grid(column=0, row=3)
    b2 = ttk.Button(win, text='2', command=lambda: get(entry, '2'))
    b2.grid(column=1, row=3)
    b3 = ttk.Button(win, text='3', command=lambda: get(entry, '3'))
    b3.grid(column=2, row=3)
    b4 = ttk.Button(win, text='4', command=lambda: get(entry, '4'))
    b4.grid(column=0, row=2)
    b5 = ttk.Button(win, text='5', command=lambda: get(entry, '5'))
    b5.grid(column=1, row=2)
    b6 = ttk.Button(win, text='6', command=lambda: get(entry, '6'))
    b6.grid(column=2, row=2)
    b7 = ttk.Button(win, text='7', command=lambda: get(entry, '7'))
    b7.grid(column=0, row=1)
    b8 = ttk.Button(win, text='8', command=lambda: get(entry, '8'))
    b8.grid(column=1, row=1)
    b9 = ttk.Button(win, text='9', command=lambda: get(entry, '9'))
    b9.grid(column=2, row=1)
    bb0 = ttk.Button(win, text='.', command=lambda: get(entry, '.'))
    bb0.grid(column=2, row=4)
    bb1 = ttk.Button(win, text='+', command=lambda: get(entry, '+'))
    bb1.grid(column=3, row=1)
    bb2 = ttk.Button(win, text='-', command=lambda: get(entry, '-'))
    bb2.grid(column=3, row=2)
    bb3 = ttk.Button(win, text='*', command=lambda: get(entry, '*'))
    bb3.grid(column=3, row=3)
    bb4 = ttk.Button(win, text='/', command=lambda: get(entry, '/'))
    bb4.grid(column=3, row=4)
    bb5 = ttk.Button(win, text='->', command=lambda: back(entry))
    bb5.grid(column=0, row=4)
    bb6 = ttk.Button(win, text='x^n', command=lambda: get(entry, '**'))
    bb6.grid(column=5, row=1)
    bb7 = ttk.Button(win, text='mod', command=lambda: get(entry, '%'))
    bb7.grid(column=5, row=2)
    bb8 = ttk.Button(win, text='clear', command=lambda: clear(entry))
    bb8.grid(column=5, row=3)
    bb9 = ttk.Button(win, text='=', command=lambda: calculate(entry))
    bb9.grid(column=5, row=4, )

    win.mainloop()

     

     



    ## 3. 实验过程中遇到的问题和解决过程
    加入新的,未使用过的正余弦函数时,对函数不理解,通过查阅资料了解了用法,并借助网上的源码,对高级功能进行了完善。

    ## 其他(感悟、思考等)

    通过基本语法、判定语句、循环语句、逻辑运算等知识,可以完成简易计算器,在网上,很多大佬制作了有界面的计算器,需要继续学习python,学会更高的技巧。

    ## 参考资料

    https://blog.csdn.net/cumudi0723/article/details/107803663

  • 相关阅读:
    Java Volatile keyword
    解决 The &#39;InnoDB&#39; feature is disabled; you need MySQL built with &#39;InnoDB&#39; to have it working
    【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成
    【DP】UVA 624 CD 记录路径
    ns3加入模块之vanet-highway
    awk向脚本传递參数(二)
    【传递正能量】献给默默追梦的人
    算法(第四版)学习笔记之java实现可以动态调整数组大小的栈
    Webstorm/IntelliJ Idea 过期破解方法
    CenterOS下安装NodeJS
  • 原文地址:https://www.cnblogs.com/2902480848sy/p/14742558.html
Copyright © 2020-2023  润新知