如何在 Python 3 中制作计算器

时间:2021-04-25 18:36:15

标签: python calculator

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

每个数学运算都需要有自己的函数/方法: 加法 - 最多需要 5 个参数, 减法 - - 需要 3 个参数, 乘法 - 需要 4 个参数, 除法 - 需要 2 个参数, 日志 - 需要 1 个参数, 将一个数字提高到一个幂前。 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()

1 个答案:

答案 0 :(得分:0)

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

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))