Перейти к содержанию

Урок 002: ввод пользователя и типы

Цель

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

input всегда возвращает строку

Функция input показывает приглашение, ждёт ввод и возвращает значение типа str:

product_name = input("Название позиции: ")
quantity_text = input("Количество: ")

print(type(product_name))
print(type(quantity_text))

Даже если пользователь вводит 4, Python получает строку "4". Строку нельзя без преобразования умножать на цену как число.

Явное преобразование

quantity_text = input("Количество: ")
quantity = int(quantity_text)

unit_price_text = input("Цена за единицу: ")
unit_price = float(unit_price_text)

subtotal = unit_price * quantity
print(f"Сумма: {subtotal:.2f} руб.")

int принимает текст целого числа, например "4". float принимает "125.5"; в программном вводе используется точка. Запись "125,5" вызовет ValueError, если вы специально не добавили поддержку запятой.

Минимальная обработка ошибки

price_text = input("Цена: ").replace(",", ".")

try:
    price = float(price_text)
except ValueError:
    print("Ошибка: цена должна быть числом")
else:
    print(f"Принята цена {price:.2f} руб.")

Блок try содержит операцию, которая может не выполниться для некоторых данных. except ValueError обрабатывает именно ошибку преобразования. else запускается после успешного преобразования.

На этом этапе программа сообщает об ошибке и завершается. Повторный запрос будет добавлен после изучения цикла while.

Пустая строка

Строковый метод strip удаляет пробелы по краям. Он помогает отличить название от пустого ввода:

product_name = input("Название: ").strip()

if product_name == "":
    print("Ошибка: название не может быть пустым")
else:
    print(f"Принята позиция: {product_name}")

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

Контрольные сценарии

Ввод цены Результат
125.50 число 125.5 принято
125,50 после replace принято 125.5
abc сообщение о необходимости числа
пустая строка сообщение о необходимости числа

Упражнение

Создайте input_lab.py, который запрашивает название, цену и количество, затем выводит сводку. Проверьте корректные числа, цену с запятой, буквенное количество и пустое название. Пока допускается завершение программы после неверного числового ввода.

Самопроверка

  • Почему результат input нельзя сразу считать числом?
  • Чем int("3") отличается от float("3")?
  • Какой тип ошибки обрабатывает показанный except?
  • Почему полезно хранить исходный текст и преобразованное число под разными именами?

← Предыдущий урок · Следующий урок →