Рассказываем, как создать простой калькулятор на Python. Внутри — комментарии, инструкции и полезные советы
30К открытий274К показов
Python остается одним из самых популярных языков программирования. Он используется в огромном количестве областей — от разработки ботов в Telegram до машинного обучения и Big Data. Но прежде, чем браться за более сложные задачи, нужно научиться писать базовые программы. В статье расскажем, как создать простейший калькулятор на Python с пояснениями и инструкциями.
Если вы совсем новичок в Python, посмотрите эту статью — в ней много полезностей, которые помогут освоить этот язык программирования.
Для начала: устанавливаем Python и выбираем среду разработки
Для установки заходим на официальный сайт и скачиваем установочный файл с Python — он сам определит, какая у вас операционная система. Открываем файл и Python. Под MacOS все настройки стандартные, а на Windows нужно поставить галочки:
Installing for all users
Add Python to PATH (чтобы использовать Python через командную строку)
На Linux в терминале прописываем:
sudo apt-get install python3 # для Debian/Ubuntu
sudo dnf install python3 # для Fedora/RedHat
Не забудьте проверить, что Python точно установился, нужно ввести в терминале команды:
python --version # для Windows и MacOS
python3 --version # для Linux
Если все хорошо, консоль выведет версию вашего питона, например, Python 3.11.2.
Теперь о среде разработки — где нам писать код простого калькулятора. Здесь есть два популярных варианта:
PyCharm. Заточен специально под Python и помогает редактировать и тестировать код, а также искать в нем ошибки. А еще программа предложит завершить код за вас благодаря умным технологиям. Подходит для более быстрых и мощных компьютеров — если у вас меньше 8 ГБ оперативной памяти, то стоит пользоваться следующим вариантом.
Интерфейс PyCharm
Visual Studio Code (VSCode). Это самая популярная среда разработки: она мультиязычная, интуитивно понятная, плюс есть умное автозавершение кода и подсветка ошибок. Подойдет для не самых мощных ПК.
Интерфейс VSCode
Интерфейсы двух IDE крайне схожи — выбирайте ту, которая больше нравится, плюс не забывайте учитывать мощность компьютера.
Создаем калькулятор на Python: пошаговая инструкция
Наконец-то переходим к созданию самой программы калькулятора.
Шаг 1. Проверяем ввод-вывод
num1 = input("Введите первое число: ") # присваиваем переменной num1 значение, которое ввел пользователь
num2 = input("Введите второе число: ") # то же самое с num2
print("Первое число: ", num1) # вывод текста "Первое число: {значение переменной num1}"
print("Второе число: ", num2) # вывод текста "Второе число: {значение переменной num2}"
Вывод в редакторе будет следующий:
Введите первое число: 1
Введите второе число: 2
Первое число: 1
Второе число: 2
Process finished with exit code 0
Шаг 2. Прописываем математические операции
К коду выше добавляем ввод математических операций. Затем через операторы if/elif/else делаем проверку того, что ввел пользователь:
num1 = input("Введите первое число: ")
num2 = input("Введите второе число: ")
print("Первое число:", num1)
print("Второе число:", num2)
message = # message — многострочная текстовая переменная, которая обозначается тремя кавычками
'''
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
'''
# спрашиваем у пользователя, какую операцию он хочет выбрать
operation = input(message)
# выводим выбранную операцию (или сообщение об ошибке)
if operation == '+':
print('Сложение')
elif operation == '-':
print('Вычитание')
elif operation == '/':
print('Деление')
elif operation == '*':
print('Умножение')
else:
print('Неизвестная операция')
Вывод будет такой:
Введите первое число: 1
Введите второе число: 2
Первое число: 1
Второе число: 2
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
+
Сложение
Process finished with exit code 0
А если ввести другой рандомный символ, например, ^, то вывод будет следующий:
Введите первое число: 1
Введите второе число: 2
Первое число: 1
Второе число: 2
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
^
Неизвестная операция
Process finished with exit code 0
Шаг 3. Добавляем result
На этом этапе прописываем переменную result и записываем в нее результат нашего кода простого калькулятора в зависимости от того, какую выбрали операцию:
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
print("Первое число:", num1)
print("Второе число:", num2)
message = '''
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
'''
# спрашиваем у пользователя, какую операцию он хочет выбрать
operation = input(message)
# выводим выбранную операцию (или сообщение об ошибке)
if operation == '+':
print('Сложение')
result = num1 + num2
elif operation == '-':
print('Вычитание')
result = num1 - num2
elif operation == '/':
print('Деление')
result = num1 / num2
elif operation == '*':
print('Умножение')
result = num1 * num2
else:
print('Неизвестная операция')
print("Результат:", result)
В переменных num1 и num2 нужно обязательно добавить int() перед input, иначе результат будет такой:
Введите первое число: 1
Введите второе число: 2
Первое число: 1
Второе число: 2
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
+
Сложение
Результат: 12
С int же программа действительно выполнит математическое сложение. В таком случае результат будет соответствовать ожиданиям и выдаст:
Первое число: 1
Второе число: 2
# пропускаем часть вывода для краткости
Ваш выбор:
+
Сложение
Результат: 3
Шаг 4. Тестируем, или «а что будет, если...»
В целом простой калькулятор готов, но любому начинающему и даже опытному программисту нужно быть еще и тестировщиком и проверять программы на глупые ошибки. Например, что будет, если разделить на 0 (надеемся, вы не забыли, что это невозможно). Вот что выдаст программа:
Traceback (most recent call last):
File "abc.py", line 32, in <module>
result = num1 / num2
~~~~~^~~~~~
ZeroDivisionError: division by zero
Деление
Process finished with exit code 1
Как мы видим, программа выдает ошибку ZeroDivisionError, поэтому нужно выполнить ее обработку с помощью конструкции try/except:
elif operation == '/':
try:
result = num1 / num2 # питон пытается разделить первое число на второе, но возникает ошибка ZeroDivisionError
except ZeroDivisionError: # в этой строчке мы обрабатываем эту ошибку
result = "Деление на ноль запрещено" # присваиваем переменной result
Если же пользователь захочет ввести дробное число, то программа опять выдаст ошибку:
Введите первое число: 0.2
Traceback (most recent call last):
File "abc.py", line 1, in <module>
num1 = int(input("Введите первое число: "))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: '0.2'
Process finished with exit code 1
То же самое произойдет, если ввести рандомную строку:
Введите первое число: аааbbbccc
Traceback (most recent call last):
File "abc.py", line 1, in <module>
num1 = int(input("Введите первое число: "))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'ывтмсидыорив'
Process finished with exit code 1
Чтобы избавиться от этой ошибки, добавляем в код такую обработку:
try:
number = float(input(prompt)) # проверяем, является ли число дробным
if number.is_integer():
return int(number) # проверяем, является ли число целым
return number
except ValueError:
print("Это не число! Пожалуйста, введите число.") # если пользователь ввел не число, то выводим это сообщение
Шаг 5. Шлифуем
На этом этапе мы прорабатываем ошибки (например, деление на 0) и добавляем оставшиеся функции:
Добавляем функцию get_number() — спрашивает числа и принимает prompt.
Пишем функцию get_operation() спрашивает оператор (и ничего не принимает).
Добавляем функцию calculate(), которая принимает 2 числа и оператор и возвращает результат.
Дописываем обработку ошибок по вводу числа и оператора и делению на 0.
В конце можно добавить бесконечный цикл по вызову функции main(), который спрашивает у юзера, хочет ли он продолжить.
Получаем итоговый код:
# функция получения числа от пользователя
def get_number(prompt):
while True:
try:
number = float(input(prompt)) # проверяем, является ли число дробным
if number.is_integer():
return int(number) # проверяем, является ли число целым
return number
except ValueError:
print("Это не число! Пожалуйста, введите число.") # если пользователь ввел не число, то выводим это сообщение
# функция получения математического оператора
def get_operation():
message = '''
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
'''
correct_operations = '+-/*' # строка корректных операций
# спрашиваем у пользователя, какую операцию он хочет выбрать
operation = input(message)
while operation not in correct_operations:
# выводим выбранную операцию; если операция отсутствует в строке корректных операций, то выводим сообщение об ошибке
print('Такая операция недоступна. Повторите попытку.')
operation = input(message)
return operation
# функция расчета
def calculate(num1, num2, operation):
result = None
if operation == '+':
result = num1 + num2
elif operation == '-':
result = num1 - num2
elif operation == '/':
try:
result = num1 / num2
except ZeroDivisionError:
result = "Деление на ноль запрещено"
elif operation == '*':
result = num1 * num2
return result
# главная функция, которая вызывает все функции написанные выше
def main():
num1 = get_number("Введите первое число: ") # ввод первого числа
num2 = get_number("Введите второе число: ") # ввод второго числа
operation = get_operation() # ввод операции
result = calculate(num1, num2, operation) # результат
print("Результат:", result) # вывод результата
# вызываем основую функцию main
main()
# после выполнения main() запускаем бесконечный цикл (while True)
while True:
# спрашиваем пользвователя, желает ли он дальше пользоваться калькулятором
decision = (input('Продолжить? (да/нет) ')).lower()
# если да, то опять вызываем main()
if decision == 'да':
main()
# если нет, выходим из бесконечного цикла (break)
elif decision == 'нет':
break
Вывод будет такой:
Введите первое число: 1
Введите второе число: 2
Выберете математическую операцию:
+ : Сложение
- : Вычитание
/ : Деление
* : Умножение
Ваш выбор:
-
Результат: -1
Продолжить? (да/нет) да
Введите первое число:
Поздравляем, вы великолепны! Теперь вы знаете, как создать код простого калькулятора на Python.
Пишите в комментариях, если хотите увидеть статью, как сделать простое приложение (да, настоящие приложение с интерфейсом) на Python.
На первом месте среди самых прибыльных профессий в IT — разработчик на языке Solidity с зарплатой до 640 тыс рублей в месяц. В топ-5 также вошли продакт-менеджеры, тимлиды, Python-разработчики в финтехе, Linux-инженеры и QA-инженеры
Если бы у вас была машина времени и можно было вернуться в прошлое, чтобы дать совет двадцатилетнему себе, о чем бы сказали? Что бы посоветовали не упустить на старте карьеры? Мы решили не дожидаться изобретения путешествий во времени и в рамках Восточного экономического форума провели сессию «Знать бы в 20».