Простой калькулятор
В этом примере соберём простой калькулятор, который умеет складывать, вычитать, умножать и делить два числа. Операция выбирается через меню, сами действия вынесены в отдельные функции.
Что нужно знать
Перед изучением примера полезно понимать:
Операторы в Python — операторы
Функции в Python — функции
Аргументы функций в Python — аргументы функций
Пользовательские функции в Python — пользовательские функции
Пример. Калькулятор на функциях
# 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.