猫史档案馆


【Python作品分享】计算器2.0【作品秀】

用户:来者什人来者什人查看:0 回复:0 评论:0 创建时间:2020-04-16T09:46:25


【作品展示】

center_image

 

【作品介绍】

这是在1.0版的基础上添加计算三角函数等功能。更多功能更方便。

 

【作品源代码】

import easygui
import math


def 计算():

    global a, b, c
    if easygui.ynbox('请问需要进行加法运算吗?'):
        try:
            a, a = float(input('第一个加数?')), 0
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = float(input('第二个加数?'))
            except ValueError:
                b = float(input('请重新输入!'))
            else:
                c = (a + b)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行减法运算吗?'):
        try:
            a = float(input('被减数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = float(input('减数?'))
            except ValueError:
                b = float(input('请重新输入!'))
            else:
                c = (a - b)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行乘法运算吗?'):
        try:
            a = float(input('第一个乘数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = float(input('第二个乘数?'))
            except ValueError:
                b = float(input('请重新输入!'))
            else:
                c = (a * b)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行除法运算吗?'):
        try:
            a = float(input('被除数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = float(input('除数?'))
                while (b == 0):
                    b = float(input('请重新输入!'))
                    if (b != 0):
                        break
            except ValueError:
                b = float(input('请重新输入!'))
                while (b == 0):
                    b = float(input('请重新输入!'))
                    if (b != 0):
                        break
            else:
                c = (a / b)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行乘方运算吗?'):
        try:
            a = float(input('底数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = float(input('指数?'))
            except ValueError:
                b = float(input('请重新输入!'))
            else:
                c = (a ** b)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行开方运算吗?'):
        try:
            a = float(input('被开方数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            try:
                b = int(input('根指数?'))
                while (b == 0):
                    b = int(input('请重新输入!'))
                    if (b != 0):
                        break
            except ValueError:
                b = int(input('请重新输入!'))
                while (b == 0):
                    b = int(input('请重新输入!'))
                    if (b != 0):
                        break
            else:
                c = (a ** (1 / b))
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行对数运算吗?'):
        try:
            a = float(input('真数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            if easygui.ynbox('请问需要进行哪种对数运算?', '对数运算选择', ('自然对数', '常用对数')):
                c = math.log(a)
                print(('结果为' + str(c)))
            else:
                c = math.log10(a)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行估算吗?'):
        try:
            a = float(input('需要估算的数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            if easygui.ynbox('请问需要进行四舍五入估算吗?', '估算选择', ('是', '否')):
                try:
                    b = int(input('精确到小数点后第几位?'))
                except ValueError:
                    b = int(input('请重新输入!'))
                else:
                    c = round(a, b)
                    print(('结果为' + str(c)))
            elif easygui.ynbox('请问需要进行向上舍入估算吗?', '估算选择', ('是', '否')):
                c = math.ceil(a)
                print(('结果为' + str(c)))
            else:
                c = math.ceil(a)
                print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要进行阶乘运算吗?'):
        try:
            a = int(input('阶乘至几?'))
        except ValueError:
            a = int(input('请重新输入!'))
        else:
            c = (math.factorial(a))
            print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要计算绝对值吗?'):
        try:
            a = float(input('需要求绝对值的数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            c = abs(a)
            print(('结果为' + str(c)))
        finally:
            if easygui.ynbox('是否继续计算?'):
                计算()
    elif easygui.ynbox('请问需要计算三角函数吗?'):
        try:
            a = float(input('度数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            三角函数选择()
    elif easygui.ynbox('请问需要计算反三角函数吗?'):
        try:
            a = float(input('度数?'))
        except ValueError:
            a = float(input('请重新输入!'))
        else:
            反三角函数选择()
    else:
        计算()

def 三角函数选择():

    global a, c
    if easygui.ynbox('请问需要计算正弦函数吗?', '三角函数选择', ('是', '否')):
        c = math.sin(math.radians(a))
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算余弦函数吗?', '三角函数选择', ('是', '否')):
        c = math.cos(math.radians(a))
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算正切函数吗?', '三角函数选择', ('是', '否')):
        c = math.tan(math.radians(a))
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算余切函数吗?', '三角函数选择', ('是', '否')):
        c = (1 / math.tan(math.radians(a)))
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算正割函数吗?', '三角函数选择', ('是', '否')):
        c = (1 / math.cos(math.radians(a)))
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算余割函数吗?', '三角函数选择', ('是', '否')):
        c = (1 / math.sin(math.radians(a)))
        print(('结果为' + str(c)))
    else:
        三角函数选择()

def 反三角函数选择():

    global a, c
    if easygui.ynbox('请问需要计算反正弦函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.asin(a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算反余弦函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.acos(a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算反正切函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.atan(a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算反余切函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.atan(1 / a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算反正割函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.acos(1 / a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    elif easygui.ynbox('请问需要计算反余割函数吗?', '三角函数选择', ('是', '否')):
        c = (((math.asin(1 / a)) / (math.pi)) * 180)
        print(('结果为' + str(c)))
    else:
        反三角函数选择()

#开始进入Python的世界
easygui.msgbox('你好。', '计算器', '谢谢,请开始计算吧。')
计算()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页