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

    Команда Simple-Server
    03.06.2026
    13 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Примеры кода математических операций

    Математические операции, которые будем использовать:

    2+2 4 10-5 5 3*3 9 12/4 3.0

    Чтобы видеть результат, его нужно вывести на экран. Для этого существует функция print(), которая выводит аргументы в скобках в консоль.

    Эта функция будет аналогом дисплея нашего калькулятора.

    Сохранение результата в переменную

    Чтобы не производить вычисления внутри функции print(), будем хранить их в переменной.

    Далее мы сможем вывести в консоль значение переменной.

    С дисплеем разобрались, теперь используем Python 3 для создания ввода с клавиатуры. У нас есть кнопки с цифрами на клавиатуре, чтобы передать их программе, существует функция input(). При вызове она считывает любые символы с клавиатуры до тех пор, пока не будет нажата клавиша Enter. После этого она возвращает результат в виде строки из введённых символов. Давайте посмотрим, как это работает:

    Выведем результат на экран.

    Если передать внутрь функции input() текст, то он выводится на экран перед тем, как начнётся считывание строки.

    username = input('Enter your name: ') # Иван print(username) Enter your name: Иван Иван

    Объединение и форматирование строк

    Чтобы вывод данных стал более дружелюбным, мы можем добавить пояснения к ним. Для этого используем объединение (конкатенацию) строк.

    print('Hello, ' + username + '!') Hello, Иван!

    Ещё один способ объединения текста с данными — использование форматированных строк. Для этого перед кавычками необходимо поставить символ f, а данные записывать прямо внутри строки в фигурных скобках. Такой функционал появился с версии Python 3.6.0.

    print(f'Hello, {username}!') Hello, Иван!

    Теперь, когда мы умеем производить математические операции, считывать данные с клавиатуры и красиво выводить результат в консоль, давайте наконец-то напишем первую версию калькулятора! Для простоты пусть он пока будет только складывать числа, но это уже будет готовый пример кода программы на Питон.

    # Считываем данныеa = input('Введите первое число: ') b = input('Введите второе число: ')​ # Производим вычисления result = a + b # Выводим результат в консоль print(f'Сумма чисел {a} и {b} равняется: {result}') Введите первое число: 12 Введите второе число: 55 Сумма чисел 12 и 55 равняется: 1255

    Что-то пошло не так. Числа не сложились, а объединились как текст. Дело в том, что input() в Python возвращает ввод строки с клавиатуры, даже если вы вводили только числа. Такое поведение более явное, что соответствует философии Python: «Явное лучше, чем неявное». Для того чтобы исправить возникшую ошибку, используем функцию перевода строки в число: int(). Посмотрим на примере, как работает**** num int input:

    num = int(input()) print(num + 10) 32 42

    Отредактируем нашу программу.

    # Считываем данныеa = int(input('Введите первое число: ')) b = int(input('Введите второе число: ')) # Производим вычисления result = a + b # Выводим результат в консоль print(f'Сумма чисел {a} и {b} равняется: {result}') Введите первое число: 12 Введите второе число: 55 Сумма чисел 12 и 55 равняется: 67

    Обработка некорректных данных

    Но что если пользователь введёт не числа, а буквы или другие символы? При попытке перевести такую строку в число Python выдаст ошибку и остановит выполнение программы.

    int(input('Введите первое число: ')) Введите первое число: abc ------------------------------------------------------------------------ ValueError  Traceback (most recent call last) C:\Temp\ipykernel_5404\317567321.py in <module> ----> 1 int(input('Введите первое число: ')) ValueError: invalid literal for int() with base 10: 'abc'

    Такие ошибки можно оперативно определять и менять стандартное поведение при их возникновении, например предлагать пользователю ввести число заново. Но это отдельная тема для разговора, поэтому в контексте этой статьи условимся, что пользователь всегда вводит корректные данные.

    Итак, у нас есть практически все компоненты для того, чтобы написать полноценный калькулятор. Давайте расширим функционал текущей версии до выполнения всех математических операций, которые мы запланировали:

    • Сложение
    • Вычитание
    • Деление
    • Умножение

    Чтобы улучшить читаемость кода, разделим эти операции на отдельные функции. Смотрите, как это делается на примере суммы.

    # Сложение def sum(a, b): result = a + b return result

    Определяем функцию с помощью ключевого слова def, пишем её название и в скобках указываем, какие параметры она принимает. Далее в теле функции пишем то, что она должна выполнять и возвращаем результат с помощью ключевого слова return .

    Обратите внимание, что тело функции записывается с отступами строки — таковы правила создания функции. В противном случае будет ошибка.

    def test(): print(123) File "C:\Temp\ipykernel_5404\353670293.py", line 2 print(123) ^ IndentationError: expected an indented block

    Результат работы функции можно также сохранить в переменную для дальнейшего использования.

    x = sum(10, 15) print(x) 25

    Аналогичным образом создадим остальные функции вычисления.

    # Вычитаниеdef subtract(a, b): result = a - b return result # Умножение def multiply(a, b): result = a * b return result # Деление def divide(a, b): result = a / b return result

    Функции операций готовы. Осталось написать**** простой код на питоне, который предоставит пользователю возможность выбора этих операций. Будем использовать уже знакомый нам ввод с клавиатуры и условные операторы. Условные операторы работают очень просто. Их название говорит само за себя.

    Если условие истинно, например 2 == 2, то выполняем один блок кода , иначе выполняем другой блок кода

    На месте двоек могут быть переменные, функции, возвращающие значения, строки и даже математические операции. Посмотрим, как это выглядит в коде на примере проверки пароля. Предположим, что верный пароль: qwerty.

    # спрашиваем у пользователя пароль password = input('Введите пароль: ') # Проверяем, соответствует ли он задуманному нами if password == 'qwerty': print('Верно!') else: print('Неправильный пароль') Введите пароль: йцукен Неправильный пароль # спрашиваем у пользователя пароль password = input('Введите пароль: ') # Проверяем, соответствует ли он задуманному нами if password == 'qwerty': print('Верно!') else: print('Неправильный пароль') Введите пароль: qwerty Верно!

    Обратите внимание, что блоки кода также пишутся с отступами, как и в функциях. Двоеточие также обязательно.

    Сразу же применим полученные знания к нашему калькулятору. Будем спрашивать у пользователя, какую операцию он хочет совершить, и, в зависимости от ввода, вызывать соответствующую функцию вычисления. Для начала просто выведем текст выбранной операции или сообщение, что такой операции не существует. Следующим шагом заменим текст на вызов операции и объединим его с уже существующей логикой калькулятора.

    # Подготовим сообщение для пользователя о доступных математических операциях. # В тройных кавычках можно хранить многострочный текст. message = ''' Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter:​ + : Сложение - : Вычитание / : Деление * : Умножение Ваш выбор: '''​ # Запрашиваем у пользователя желаемое действие operation = input(message)​ # Выводим сообщение о выбранной операции или что она отсутствует if operation == '+': print('Сложение') elif operation == '-': print('Вычитание') elif operation == '/': print('Деление') elif operation == '*': print('Умножение') else: print('Неизвестная операция')  Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter:  + : Сложение - : Вычитание / : Деление * : Умножение  Ваш выбор: + Сложение

    Собираем всё в единое целое

    Поместим всю логику вычислений внутрь функции, чтобы мы могли удобно обращаться к ней в коде скрипта.

    def calculate(a, b, operation): result = None  if operation == '+': result = sum(a, b) elif operation == '-': result = subtract(a, b) elif operation == '/': result = divide(a, b) elif operation == '*': result = multiply(a, b) else: print('Неизвестная операция')   return result

    Также добавим функцию для запроса операции.

    def ask_operation(): message = ''' Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение Ваш выбор: ''' # Запрашиваем у пользователя желаемое действие operation = input(message)  return operation

    Теперь оборачиваем все этапы взаимодействия с калькулятором в условный корпус функции calculate.

    def run_calculator(): # Запрашиваем данные a = int(input('Введите первое число: ')) b = int(input('Введите второе число: ')) # Запрашиваем тип операции operation = ask_operation() # Производим вычисления result = calculate(a, b, operation) # Выводим результат в консоль print(f'Результат вычислений: {result}') run_calculator() Введите первое число: 15 Введите второе число: 15 Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение Ваш выбор: * Результат вычислений: 225

    Работает! Поздравляем, только что вы написали свой калькулятор.

    Расширение функционала и улучшение кода

    Благодаря тому, что функции вычисления вынесены в отдельные модули calculate python, мы можем с лёгкостью расширять функционал калькулятора.

    Давайте добавим операцию возведения в степень.

    def pow(a, b): result = a ** b return result

    Добавляем операцию в функцию вычисления.

    def calculate(a, b, operation): result = None if operation == '+': result = sum(a, b) elif operation == '-': result = subtract(a, b) elif operation == '/': result = divide(a, b) elif operation == '*': result = multiply(a, b) ​   # Возведение в степень elif operation == '^' or operation == '**': result = pow(a, b) else: print('Неизвестная операция') return result

    Также добавим пояснения в функцию запроса действия.

    def ask_operation(): message = ''' Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение ^ или ** : Возведение в степень Ваш выбор: ''' # Запрашиваем у пользователя желаемое действие operation = input(message) return operation

    Проверяем, запустив функцию run_calculator().

    run_calculator() Введите первое число: 2 Введите второе число: 8 Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение ^ или ** : Возведение в степень Ваш выбор: ** Результат вычислений: 256

    Тестирование и обработка ошибок

    Сейчас, если мы введём неизвестную операцию, калькулятор выдаст сообщение, что такой операции нет, и оставит всё, как есть. Более того, он выведет сообщения о полученном результате, которого по определению быть не должно. Давайте посмотрим:

    run_calculator() Введите первое число: 3 Введите второе число: 5 Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение ^ или ** : Возведение в степень Ваш выбор: & Неизвестная операция Результат вычислений: None

    Ничего страшного не случилось, но и пользы никакой. Такой процесс, когда мы пробуем ввести в программу некорректные данные и наблюдать, как она реагирует, называется тестированием. Это отдельная профессия, но, так или иначе, элементарные тесты должен уметь делать любой программист-профессионал.

    Давайте изменим поведение программы и позволим пользователю повторно выбрать требуемую операцию.

    Для этого поместим код с запросом операции в цикл while. Принцип его во многом схож с условными операторами. Он проверяет условие на истинность и, если оно истинно, выполняет блок кода. После выполнения цикл повторяется — проверка условия и выполнение тела цикла. Таким образом, чтобы цикл завершился, нам нужно изменить проверяемое условие на ложное. Выход из цикла — это очень важный момент. Если не продумать логику выхода из цикла, он может продолжаться бесконечно, что не всегда желательно.

    Простой пример. Будем выводить в консоль всё, что введёт пользователь, до тех пор, пока не будет введена пустая строка.

    text = None while text != '': text = input('Напишите что-нибудь или оставьте строку пустой, чтобы закончить:\n') print(f'Вы ввели: {text}\n') print('Завершение программы') Напишите что-нибудь или оставьте строку пустой, чтобы закончить: 123 Вы ввели: 123 Напишите что-нибудь или оставьте строку пустой, чтобы закончить: test Вы ввели: test Напишите что-нибудь или оставьте строку пустой, чтобы закончить: Вы ввели: Завершение программы

    ​Теперь применим это к калькулятору.

    Для этого изменим функцию запроса операции ask_operation

    def ask_operation(): message = ''' Пожалуйста, введите символ операции, которую вы хотите совершить и нажмите Enter: + : Сложение - : Вычитание / : Деление * : Умножение ^ или ** : Возведение в степень Ваш выбор: ''' # Создадим список с возможными операциями correct_operations = ['+', '-', '/', '*', '^', '**'] # Первый раз запрашиваем у пользователя желаемое действие operation = input(message) # Запускаем цикл, если операции нет в списке while operation not in correct_operations: print('Такая операция недоступна. Повторите попытку.') operation = input(message) return operation

    Вычисления не производятся до тех пор, пока не будет введена корректная операция. Тест пройден.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны