【问题标题】:How to make a calculator in Python 3如何在 Python 3 中制作计算器
【发布时间】:2021-04-25 18:36:15
【问题描述】:

我需要用 Python 创建一个可以执行所有这些任务的计算器。我已经用我的代码来做加法、减法、乘法和除法。有人可以告诉我要向我的代码添加什么以向我的计算器添加对数、幂、勾股定理和阶乘吗?这些是我下面计算器的所有要求。

每个数学运算都需要有自己的函数/方法: 加法 - 最多 5 个参数, 减法 - - 需要 3 个参数, 乘法 - 接受 4 个参数, 除法 - 接受 2 个参数, 日志 - 接受 1 个参数, 将数字提高到幂 ex。 X平方, 求解勾股定理, 阶乘

def calculate():
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')

    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)

    else:
        print('You have not typed a valid operator, please run the program again.')

    # Add again() function to calculate() function
    again()

def again():
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    if calc_again.upper() == 'Y':
        calculate()
    elif calc_again.upper() == 'N':
        print('See you later.')
    else:
        again()

calculate()

【问题讨论】:

  • 一般做法是,while 循环优于递归输入解决方案,因为使用此计算器实现的用户最终会达到递归限制。
  • 到目前为止所有实现的计算都采用两个参数,但您提到了各种值,例如最多 5 个用于加法。
  • 欢迎来到 Stack Overflow!请拨打tour。这似乎是家庭作业。请阅读How do I ask and answer homework questions?您究竟需要什么帮助?首先,你知道如何在 Python 中做对数、幂、勾股定理和阶乘吗?应该有涵盖所有这些问题的现有问题。如果您想了解更多提示,请参阅How to Ask
  • 请不要破坏您的帖子。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本,因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?

标签: python calculator


【解决方案1】:

这只是您要求的功能的想法。我将其中一些添加到您的计算器中。您还可以更改要向用户显示的提示。

PS:计算器循环最好使用while

import math

def calculate():
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
! for factorial
log for logarithm(number, base)
hypot for Pythagorean
''')

    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)

    elif operation == '!':
        print(math.factorial(number_1))
        print(math.factorial(number_2))

    elif operation == 'log':
        print(math.log(number_1, number_2))

    elif operation == 'hypot':
        print(math.hypot(number_1, number_2))

    else:
        print('You have not typed a valid operator, please run the program again.')

    # Add again() function to calculate() function
    again()

def again():
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    if calc_again.upper() == 'Y':
        calculate()
    elif calc_again.upper() == 'N':
        print('See you later.')
    else:
        again()

calculate()

我根据评论更新了答案;您想从用户那里获取可变数量的输入,例如n 数字。我针对您的情况使用了add() 来回答您的确切问题并删除了其他代码。

def add(numbers_list):
    return sum(numbers_list)

if __name__ == "__main__":
    while(True):
        number_of_inputs = int(input('Number of inputs? '))
        numbers = [float(input(f'Please enter a number({i + 1}): ')) for i in range(number_of_inputs)]
        print(add(numbers))

【讨论】:

  • 谢谢伊曼我很感激,目前正在修改我的代码,并为自己添加了电源操作。还有一个快速的问题,不要打扰。我将如何为减法和乘法添加更多参数。这是否意味着添加第三个数字,第四个数字等?或者这不正确,如果我是,你介意纠正我。 @ImanShafiei
猜你喜欢
  • 2018-01-05
  • 2019-05-11
  • 1970-01-01
  • 2017-10-12
  • 2016-01-28
  • 2019-11-04
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多