Python

Как сделать калькулятор на Питоне: простой код для начинающих

Калькулятор — хороший первый проект на Питоне, потому что в нем сразу встречаются ввод данных, преобразование строки в число, условия if, арифметика и вывод результата. При этом проект остается маленьким: его можно написать в одном файле и сразу запустить

Начинать лучше с консольного калькулятора, без окон и кнопок. Графический интерфейс можно добавить позже, когда сама логика уже понятна

Короткий ответ

Создайте файл calculator.py и вставьте код

first = float(input("Первое число: "))
operation = input("Операция (+, -, *, /): ")
second = float(input("Второе число: "))

if operation == "+":
    result = first + second
elif operation == "-":
    result = first - second
elif operation == "*":
    result = first * second
elif operation == "/":
    if second == 0:
        result = "На ноль делить нельзя"
    else:
        result = first / second
else:
    result = "Неизвестная операция"

print("Результат:", result)

Запустите

python calculator.py

Пример работы

Первое число: 10
Операция (+, -, *, /): *
Второе число: 5
Результат: 50.0

Почему нужен float

input() всегда возвращает строку. Даже если пользователь ввел 10, для Python это текст "10", а не число. Чтобы можно было считать, ввод нужно преобразовать

first = float(input("Первое число: "))

float() позволяет вводить не только целые, но и дробные числа

3.5
10.25
0.7

Если вам нужны только целые числа, можно использовать int(), но для калькулятора float() обычно удобнее

Как работает выбор операции

Калькулятор спрашивает знак операции и сравнивает его с возможными вариантами

if operation == "+":
    result = first + second
elif operation == "-":
    result = first - second
elif operation == "*":
    result = first * second
elif operation == "/":
    result = first / second
else:
    result = "Неизвестная операция"

if проверяет первый вариант, elif проверяет следующие, else срабатывает, если пользователь ввел что-то другое

Почему нужно проверять деление на ноль

Если пользователь введет второе число 0 и выберет деление, Python не сможет выполнить операцию

10 / 0

Будет ошибка ZeroDivisionError. Поэтому деление лучше обработать отдельно

elif operation == "/":
    if second == 0:
        result = "На ноль делить нельзя"
    else:
        result = first / second

Так программа не падает, а показывает понятное сообщение

Как сделать калькулятор в цикле

Можно сделать так, чтобы калькулятор не закрывался после одного расчета

while True:
    first = float(input("Первое число: "))
    operation = input("Операция (+, -, *, /) или q для выхода: ")

    if operation == "q":
        break

    second = float(input("Второе число: "))

    if operation == "+":
        result = first + second
    elif operation == "-":
        result = first - second
    elif operation == "*":
        result = first * second
    elif operation == "/":
        if second == 0:
            result = "На ноль делить нельзя"
        else:
            result = first / second
    else:
        result = "Неизвестная операция"

    print("Результат:", result)
    print()

Теперь можно считать несколько примеров подряд. Для выхода пользователь вводит q

Как сделать код аккуратнее через функцию

Когда код начинает повторяться, его можно вынести в функцию

def calculate(first, operation, second):
    if operation == "+":
        return first + second
    if operation == "-":
        return first - second
    if operation == "*":
        return first * second
    if operation == "/":
        if second == 0:
            return "На ноль делить нельзя"
        return first / second

    return "Неизвестная операция"

print(calculate(10, "+", 5))
print(calculate(10, "/", 0))

Функция полезна тем, что ее можно проверить без ручного ввода. Сначала убедились, что calculate() работает, потом добавили input()

Мини-практика

Добавьте в калькулятор операцию %, которая считает остаток от деления. Затем добавьте операцию **, которая возводит число в степень

Проверьте три примера: 10 % 3, 2 ** 5, 10 / 0. Если калькулятор правильно считает первые два и не падает на делении на ноль, базовая логика работает

Частые ошибки

Ошибка первая: не преобразовать ввод в число. Если складывать строки, "10" + "5" даст "105", а не 15

Ошибка вторая: использовать один знак = вместо сравнения ==. В условии нужно писать operation == "+"

Ошибка третья: не обработать деление на ноль. Хороший учебный калькулятор должен показывать понятное сообщение

Ошибка четвертая: сразу пытаться делать красивое окно. Сначала сделайте рабочую логику в консоли, потом переходите к Tkinter или веб-интерфейсу

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x