В последние годы цифровой мир всё больше использует облачные системы. Сервисы вроде timeweb.cloud доказали своё удобство и надёжность, мгновенно обрабатывая гигантские объёмы информации. Но сегодня мы вспомним основы современных технологий и расскажем вам, как написать программу-калькулятор своими руками.
В начале работы над калькулятором вспомним, из чего он состоит и как он работает. Мы будем писать аналог простого настольного калькулятора, который есть у каждого школьника. Прочитав эту статью и выполнив все задания, вы получите готовый код на питоне простейшего калькулятора.
Технологии здесь. А вы с нами?
безопасно и с гарантией результата.
Предоставим грант до 1 000 000 ₽ на облачную
инфраструктуру и возьмем на себя весь процесс.
У настольного калькулятора есть:
- Кнопки с цифрами
- Кнопки с математическими операциями
- Дисплей
- Микросхемки внутри
В функции настольного калькулятора входит:
- Сложение
- Вычитание
- Деление
- Умножение
- Сброс операции
- Сохранение результата
- Вычисление процента
- Взятие корня числа
Для понимания принципа написания калькулятора возьмем из этого списка минимальный набор функций:
- Ввод чисел
- Вывод результата
- Сложение
- Вычитание
- Деление
- Умножение
Код можно писать прямо в онлайн-редакторе.
Например:
Примеры кода математических операций
Математические операции, которые будем использовать:
Вывод значения
Чтобы видеть результат, его нужно вывести на экран. Для этого существует функция print(), которая выводит аргументы в скобках в консоль.
Эта функция будет аналогом дисплея нашего калькулятора.
Сохранение результата в переменную
Чтобы не производить вычисления внутри функции print(), будем хранить их в переменной.
Далее мы сможем вывести в консоль значение переменной.
Чтение строк
С дисплеем разобрались, теперь используем Python 3 для создания ввода с клавиатуры. У нас есть кнопки с цифрами на клавиатуре, чтобы передать их программе, существует функция input(). При вызове она считывает любые символы с клавиатуры до тех пор, пока не будет нажата клавиша Enter. После этого она возвращает результат в виде строки из введённых символов. Давайте посмотрим, как это работает:
Выведем результат на экран.
Если передать внутрь функции input() текст, то он выводится на экран перед тем, как начнётся считывание строки.
Объединение и форматирование строк
Чтобы вывод данных стал более дружелюбным, мы можем добавить пояснения к ним. Для этого используем объединение (конкатенацию) строк.
Ещё один способ объединения текста с данными — использование форматированных строк. Для этого перед кавычками необходимо поставить символ f, а данные записывать прямо внутри строки в фигурных скобках. Такой функционал появился с версии Python 3.6.0.
Перевод строк в число
Теперь, когда мы умеем производить математические операции, считывать данные с клавиатуры и красиво выводить результат в консоль, давайте наконец-то напишем первую версию калькулятора! Для простоты пусть он пока будет только складывать числа, но это уже будет готовый пример кода программы на Питон.
Что-то пошло не так. Числа не сложились, а объединились как текст. Дело в том, что input() в Python возвращает ввод строки с клавиатуры, даже если вы вводили только числа. Такое поведение более явное, что соответствует философии Python: «Явное лучше, чем неявное». Для того чтобы исправить возникшую ошибку, используем функцию перевода строки в число: int(). Посмотрим на примере, как работает num int input:
Отредактируем нашу программу.
Обработка некорректных данных
Но что если пользователь введёт не числа, а буквы или другие символы? При попытке перевести такую строку в число Python выдаст ошибку и остановит выполнение программы.
Такие ошибки можно оперативно определять и менять стандартное поведение при их возникновении, например предлагать пользователю ввести число заново. Но это отдельная тема для разговора, поэтому в контексте этой статьи условимся, что пользователь всегда вводит корректные данные.
Создание функций
Итак, у нас есть практически все компоненты для того, чтобы написать полноценный калькулятор. Давайте расширим функционал текущей версии до выполнения всех математических операций, которые мы запланировали:
- Сложение
- Вычитание
- Деление
- Умножение
Чтобы улучшить читаемость кода, разделим эти операции на отдельные функции. Смотрите, как это делается на примере суммы.
Определяем функцию с помощью ключевого слова def, пишем её название и в скобках указываем, какие параметры она принимает. Далее в теле функции пишем то, что она должна выполнять и возвращаем результат с помощью ключевого слова return .
Обратите внимание, что тело функции записывается с отступами строки — таковы правила создания функции. В противном случае будет ошибка.
Результат работы функции можно также сохранить в переменную для дальнейшего использования.
Аналогичным образом создадим остальные функции вычисления.
Условные операторы
Функции операций готовы. Осталось написать простой код на питоне, который предоставит пользователю возможность выбора этих операций. Будем использовать уже знакомый нам ввод с клавиатуры и условные операторы. Условные операторы работают очень просто. Их название говорит само за себя.
На месте двоек могут быть переменные, функции, возвращающие значения, строки и даже математические операции. Посмотрим, как это выглядит в коде на примере проверки пароля. Предположим, что верный пароль: qwerty.
Обратите внимание, что блоки кода также пишутся с отступами, как и в функциях. Двоеточие также обязательно.
Сразу же применим полученные знания к нашему калькулятору. Будем спрашивать у пользователя, какую операцию он хочет совершить, и, в зависимости от ввода, вызывать соответствующую функцию вычисления. Для начала просто выведем текст выбранной операции или сообщение, что такой операции не существует. Следующим шагом заменим текст на вызов операции и объединим его с уже существующей логикой калькулятора.
Собираем всё в единое целое
Поместим всю логику вычислений внутрь функции, чтобы мы могли удобно обращаться к ней в коде скрипта.
Также добавим функцию для запроса операции.
Теперь оборачиваем все этапы взаимодействия с калькулятором в условный корпус функции calculate.
Проверяем!
Работает! Поздравляем, только что вы написали свой калькулятор.
Расширение функционала и улучшение кода
Добавление операций
Благодаря тому, что функции вычисления вынесены в отдельные модули calculate python, мы можем с лёгкостью расширять функционал калькулятора.
Давайте добавим операцию возведения в степень.
Добавляем операцию в функцию вычисления.
Также добавим пояснения в функцию запроса действия.
Проверяем, запустив функцию run_calculator().
Тестирование и обработка ошибок
Сейчас, если мы введём неизвестную операцию, калькулятор выдаст сообщение, что такой операции нет, и оставит всё, как есть. Более того, он выведет сообщения о полученном результате, которого по определению быть не должно. Давайте посмотрим:
Ничего страшного не случилось, но и пользы никакой. Такой процесс, когда мы пробуем ввести в программу некорректные данные и наблюдать, как она реагирует, называется тестированием. Это отдельная профессия, но, так или иначе, элементарные тесты должен уметь делать любой программист-профессионал.
Циклы
Давайте изменим поведение программы и позволим пользователю повторно выбрать требуемую операцию.
Для этого поместим код с запросом операции в цикл while. Принцип его во многом схож с условными операторами. Он проверяет условие на истинность и, если оно истинно, выполняет блок кода. После выполнения цикл повторяется — проверка условия и выполнение тела цикла. Таким образом, чтобы цикл завершился, нам нужно изменить проверяемое условие на ложное. Выход из цикла — это очень важный момент. Если не продумать логику выхода из цикла, он может продолжаться бесконечно, что не всегда желательно.
Простой пример. Будем выводить в консоль всё, что введёт пользователь, до тех пор, пока не будет введена пустая строка.
Теперь применим это к калькулятору.
Для этого изменим функцию запроса операции ask_operation
Вычисления не производятся до тех пор, пока не будет введена корректная операция. Тест пройден.
Подготовили для вас выгодные тарифы на облачные серверы
477 ₽/мес
657 ₽/мес
Заключение
Сегодня легко найти калькулятор на любой вкус: встроенные в различные приложения, сайты с калькуляторами, обычные физические калькуляторы, разнообразные инженерные модификации, включая такие интересные калькуляторы, как python ipcalc, позволяющий выполнять расчёты IP-подсети. Но что может быть лучше, чем вещь, сделанная и модернизированная своими руками?
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
