Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка

Как написать простой калькулятор на Python

Рассказываем, как создать простой калькулятор на Python. Внутри — комментарии, инструкции и полезные советы

33К открытий308К показов
Как написать простой калькулятор на Python

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 ГБ оперативной памяти, то стоит пользоваться следующим вариантом.  
Как написать простой калькулятор на Python 1
Интерфейс PyCharm
  • Visual Studio Code (VSCode). Это самая популярная среда разработки: она мультиязычная, интуитивно понятная, плюс есть умное автозавершение кода и подсветка ошибок. Подойдет для не самых мощных ПК. 
Как написать простой калькулятор на Python 2
Интерфейс 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) и добавляем оставшиеся функции:

  1. Добавляем функцию get_number() — спрашивает числа и принимает prompt.
  2. Пишем функцию get_operation()  спрашивает оператор (и ничего не принимает).
  3. Добавляем функцию calculate(), которая принимает 2 числа и оператор и возвращает результат.
  4. Дописываем обработку ошибок по вводу числа и оператора и делению на 0.
  5. В конце можно добавить бесконечный цикл по вызову функции 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.

Следите за новыми постами
Следите за новыми постами по любимым темам
33К открытий308К показов