Простой калькулятор

В этом примере соберём простой калькулятор, который умеет складывать, вычитать, умножать и делить два числа. Операция выбирается через меню, сами действия вынесены в отдельные функции.

Что нужно знать

Перед изучением примера полезно понимать:

Пример. Калькулятор на функциях

# This function adds two numbers
def add(x, y):
    return x + y

# This function subtracts two numbers
def subtract(x, y):
    return x - y

# This function multiplies two numbers
def multiply(x, y):
    return x * y

# This function divides two numbers
def divide(x, y):
    return x / y

print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Divide")

while True:
    # take input from the user
    choice = input("Enter choice(1/2/3/4): ")

    # check if choice is one of the four options
    if choice in ('1', '2', '3', '4'):
        try:
            num1 = float(input("Enter first number: "))
            num2 = float(input("Enter second number: "))
        except ValueError:
            print("Invalid input. Please enter a number.")
            continue

        if choice == '1':
            print(num1, "+", num2, "=", add(num1, num2))

        elif choice == '2':
            print(num1, "-", num2, "=", subtract(num1, num2))

        elif choice == '3':
            print(num1, "*", num2, "=", multiply(num1, num2))

        elif choice == '4':
            print(num1, "/", num2, "=", divide(num1, num2))

        # check if user wants another calculation
        # break the while loop if answer is no
        next_calculation = input("Let's do next calculation? (yes/no): ")
        if next_calculation == "no":
          break
    else:
        print("Invalid Input")

Вывод

Select operation.
1.Add
2.Subtract
3.Multiply
4.Divide
Enter choice(1/2/3/4): 3
Enter first number: 15
Enter second number: 14
15.0 * 14.0 = 210.0
Let's do next calculation? (yes/no): no

Как это работает

Каждая арифметическая операция вынесена в свою функцию: add(), subtract(), multiply() и divide(). Это делает код понятнее и легче расширять.

В бесконечном цикле while True программа спрашивает пользователя номер операции. Допустимы значения '1', '2', '3' и '4' — при любом другом вводе выводится Invalid Input и цикл начинается заново.

Если выбран корректный номер, программа считывает два числа. Блок try / except ValueError ловит ситуацию, когда пользователь вместо числа ввёл что-то постороннее — тогда выводится сообщение об ошибке, а continue возвращает в начало цикла.

Дальше через if...elif выбирается нужная функция, и результат выводится на экран. После каждой операции программа спрашивает, нужны ли ещё вычисления — при ответе no цикл завершается через break.