ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

input и преобразование типов: как читать данные

Автор: · Обновлено

Функция input() приостанавливает программу, ждёт строку от пользователя и всегда возвращает текст. Даже ввод 25 сначала представлен строкой '25'. Для арифметики её явно преобразуют через int() или float().

Путь данных от клавиатуры к вычислению

first = int(input('Первое число: '))
second = int(input('Второе число: '))
total = first + second

print('Сумма:', total)

Если по очереди ввести 12 и 8, сеанс будет выглядеть так:

Первое число: 12
Второе число: 8
Сумма: 20

Подсказка внутри input выводится до ожидания ответа. int получает введённую строку, проверяет целочисленную запись и создаёт число. Только после этого оператор + выполняет сложение.

Почему получается 128 вместо 20

Без преобразования два результата input() остаются строками, а + соединяет строки: '12' + '8' даёт '128'. Ошибка другого типа возникает при вводе 12.5: int('12.5') вызовет ValueError, потому что точка не входит в запись целого числа. Для дробного ввода нужен float, но выбор должен соответствовать условию задачи.

Не добавляйте int автоматически ко всему. Имя, адрес или номер телефона часто должны остаться строками: над ними не выполняют обычную арифметику, а ведущий ноль может быть значимым.

Самостоятельная проверка

Прочитайте длину и ширину прямоугольника как целые числа, вычислите периметр и выведите Периметр: .... Проверьте пары 3, 5, 1, 1 и 0, 7; ожидаются 16, 4 и 14. После этого временно уберите одно преобразование int и объясните появившуюся ошибку или неожиданный результат через типы операндов.

Разбор невалидного ввода

Составьте таблицу для строк «42», «-7», «3.5», пустой строки и слова «десять». Для каждой заранее укажите, пройдёт ли преобразование int и какое исключение ожидается. Запустите небольшой диагностический цикл, который использует try только для эксперимента, и сравните наблюдения. Затем решите, какие значения допустимы в задаче о количестве учеников, а какие — в задаче о температуре. В основной программе оставьте тип, соответствующий предметному смыслу. Эта работа учит не просто добавлять преобразование, а связывать формат входа, допустимый диапазон и дальнейшие операции.

Практикум: расчёт стоимости по пользовательскому вводу

Прочитайте название билета, целое количество и дробную цену. Выведите общую стоимость с двумя знаками. Подготовьте ввод 3 и 125.50, нулевое количество, пробелы вокруг числа и слово вместо количества. Сначала выполните прямое преобразование и изучите ValueError, затем добавьте понятную проверку либо обработку ошибки. Не преобразуйте название: строковый и числовой ввод имеют разные контракты. В итоговом варианте повторите ввод или завершите программу с конкретным сообщением.

Контрольная точка

Почему input() возвращает строку даже при вводе цифр? Объясните, где программа узнаёт желаемый тип и почему выражение "3" * 2 не равно числу 6.

Частые вопросы

Можно ли сразу написать int(input())?

Да, если по условию гарантировано целое число. Для пользовательской программы стоит определить поведение при пустом или неверном вводе. Краткая запись не отменяет контракт и возможную ошибку преобразования.

Источники