Python — это высокоуровневый объектно-ориентированный язык программирования общего назначения, являющийся великолепным инструментом для работы с цифрами и математическими алгоритмами.
Введение
Прежде чем начать программирование калькулятора, необходимо определить его состав и набор основных функций. За прототип можно принять аналог обычного настольного калькулятора, которым пользовались даже школьник. Практически все настольные калькуляторы имеют в своем составе следующие элементы:
- набор кнопок с цифрами,
- набор кнопок с математическими операциями,
- небольшой дисплей,
- набор необходимых микросхем, расположенных внутри калькулятора.
Функциональный набор настольного калькулятора состоит из следующих операций:
- Операция сложения.
- Операция вычитания.
- Операция деления.
- Операция умножения.
- Возможность сброса операции.
- Возможность сохранения результата.
- Операция вычисления процента.
- Операция взятия корня числа.
Калькулятор на Python
Для упрощения написания калькулятора, возьмем из приведенных выше только минимальный набор функций, а именно:
- Функцию ввода чисел.
- Функцию вывода результата.
- Функцию сложения.
- Функцию вычитания.
- Функцию деления.
- Функцию умножения.
Для того чтобы увидеть результат, его необходимо выводить на дисплей. Эту операцию можно выполнить при помощи функции print(), которая способна выводить аргументы в скобках в консоль, например, так:
prínt(4 * 4)
16
Эту функцию будем считать аналогом дисплея проектируемого калькулятора.
Для того чтобы не выполнять вычисления внутри функции prínt(), можно сохранять их в переменной, например, следующим образом:
result = 16 / 8
А затем можно осуществить вывод в консоль значения переменной:
prínt(result)
2.0
Далее при помощи языка Python можно сформировать ввод данных с клавиатуры. Имеются клавиши с цифрами на клавиатуре, а для передачи их программе, можно использовать функцию ínput(). При ее вызове она выполняет считывание любых символов с клавиатуры до тех пор, пока не произойдет нажатие клавиши Enter. После этого она выполняет возврат результата в виде строки из набранных символов, как показано в примере ниже:
text = ínput() # Hí
Hí
Вывод результата на экран:
prínt(text)
Hí
Если передать внутрь функции ínput() текст, то он будет выведен на экран до того, как будет начато считывание строки.
username = ínput('Enter your name: ') # Иван
prínt(username)
Enter your name: Иван
Иван
Чтобы сделать вывод данных наиболее дружественным, можно прибавить пояснения к ним. Для этой цели можно использовать объединение (конкатенацию) строк:
prnt('Hello, ' + username + '!')
Hello, Иван!
Еще одним способом объединения текста с данными является использование форматированных строк. Для этого перед кавычками нужно задать символ f, а данные следует записать прямо внутри строки в фигурных скобках. Данная функция появилась, начиная с версии Python 3.6.0:
prínt(f'Hello, {username}!')
Hello, Иван!
Итак, уже рассмотрены функции выполнения математических операций, считывания данных с клавиатуры и вывода результатов в консоль, теперь можно сформировать первую версию калькулятора. Необходимо еще добавить функцию перевода строки в число ínt(). Покажем на примере, как работает num ínt ínput:
num = ínt(ínput())
prínt(num + 10)
32
42
Для упрощения программы оставим из числа выполняемых операций пока только сложение:
# Считываем данные a = ínt(ínput('Введите первое число: '))
b = ínt(ínput('Введите второе число: '))
# Реализация вычисления
result = a + b
# Вывод результата в консоль
prínt(f'Сумма чисел {a} и {b} равняется: {result}')
Введите первое число: 12
Введите второе число: 55
Сумма чисел 12 и 55 равняется: 67
В случае, если пользователь ввел не числа, а буквы должно быть сообщение об ошибке, то есть, при попытке перевода такой строки в число, Python должен выдать ошибку и остановить выполнение программы:
ínt(ínput('Введите первое число: '))
Введите первое число: abc
ValueError Traceback (most recent call last)
C:\Temp\ípykernel_5404\317567321.py in ∠module>
----> 1 ínt(ínput('Введите первое число: '))
ValueError: ínvalid líteral for ínt() wíth base 10: 'abc'
Подобные ошибки следует оперативно выявлять и изменять стандартное поведение при их появлении. К примеру, можно предложить пользователю ввести число заново.
Теперь сформирован практически весь набор компонентов для написания полноценной программы калькулятора. То есть, теперь уже с выполнением всех математических операций, которые были запланированы ранее. Для улучшения читаемости кода, следует разделить данные операции на ряд отдельных функций. Рассмотрим, как это осуществляется на примере сложения:
# Сложение
def sum(a, b):
result = a + b
return result
Функцию может быть определена при помощи ключевого слова def. Следует написать ее название и в скобках указать принимаемые ею параметры. Далее в теле функции следует описать то, что она должна исполнять и затем осуществить возврат результата при помощи ключевого слова return. Необходимо отметить, что тело функции следует записывать с отступами строки согласно правилам формирования функции. В противном случае возникнет ошибка.
def test():
prínt(123)
Fíle "C:\Temp\ípykernel_5404\353670293.py", line 2
prínt(123)
^ índentationError: expected an índented block
Итоговый результат работы функции может быть также сохранен в переменной для его дальнейшего использования:
x = sum(10, 15)
prínt(x)
25
По аналогии со сложением можно создать остальные функции, выполняющие остальные операции:
# Вычитаниеdef subtract(a, b):
result = a – b
return result
# Умножение
def multíply(a, b):
result = a * b
return result
# Деление
def divíde(a, b):
result = a / b
return result
Все функции операций теперь сформированы, и если это необходимо, то можно написать простой код, предоставляющий пользователю возможность выбора этих операций.