Урок курса
Ввод от пользователя и преобразование типов
Python для новичковДо этого момента программы работали только с данными, которые вы вписывали в код сами. Переменная получала значение прямо в редакторе, и пользователь не мог на это повлиять. Этот урок меняет картину: теперь программа будет спрашивать — и ждать ответа.
Функция input() и возвращаемое значение
Функция input() — первый инструмент, который делает программу интерактивной. Когда Python доходит до строки с input(), выполнение приостанавливается: в терминале появляется подсказка (если вы её передали), и программа ждёт, пока пользователь что-нибудь напечатает и нажмёт Enter.
Выглядит это так:
name = input('Как тебя зовут? ')
print(name)
Программа выведет Как тебя зовут? , затем замрёт. Пользователь печатает, например, Алиса и нажимает Enter. Только после этого выполнение продолжается — и в переменной name окажется строка 'Алиса'.
Здесь появляется важное понятие — возвращаемое значение функции. Функция не просто «что-то делает» — она передаёт результат обратно в то место кода, откуда была вызвана. Именно поэтому можно написать name = input(...): правая часть вычисляется в строку, и эта строка присваивается переменной.
То же самое работает без промежуточной переменной — возвращаемое значение можно передать напрямую в другую функцию:
print(input('Введи слово: '))
Здесь input() возвращает строку, и print() сразу её выводит. Переменная не нужна, если значение используется только один раз.
Один момент, который нужно зафиксировать сейчас и не забывать: input() всегда возвращает строку (str) — независимо от того, что именно напечатал пользователь. Цифры, пробелы, любые символы — всё приходит как текст. Что с этим делать, разберём в следующем разделе.
Приведение типа: int() и float()
Мы уже знаем, что input() всегда возвращает строку. Проблема возникает, когда нужно что-то посчитать с введённым значением.
Попробуйте такой код:
a = input('Первое число: ')
b = input('Второе число: ')
print(a + b)
Если пользователь введёт 3 и 5, на экране появится 35, а не 8. Это не баг Python — это ожидаемое поведение: оператор + для строк означает конкатенацию, то есть склейку. Строка '3' плюс строка '5' — это строка '35'.
Чтобы получить число, строку нужно явно преобразовать. Для этого есть две функции:
int()— превращает строку в целое число:int('25')даёт25float()— превращает строку в число с плавающей точкой:float('3.14')даёт3.14
Это и называется приведением типа (type casting) — вы явно говорите Python, как интерпретировать значение.
На практике int() и float() оборачивают вызов input() прямо при присваивании:
age = int(input('Введите возраст: '))
price = float(input('Цена товара: '))
Что здесь происходит по шагам: сначала вычисляется внутренний вызов — input() возвращает строку, например '25'. Затем эта строка передаётся в int(), который возвращает число 25. И уже это число сохраняется в переменную age.
Теперь с переменной можно спокойно делать арифметику:
a = int(input('Первое число: '))
b = int(input('Второе число: '))
print(a + b)
При вводе 3 и 5 программа выведет 8 — потому что теперь a и b это числа, а не строки.
Выбор между int() и float() зависит от задачи: если ожидаете целое число (возраст, количество, год) — используйте int(). Если значение может быть дробным (цена, вес, температура) — float(). Стоит учесть, что float() принимает и целые значения без проблем: float('5') вернёт 5.0. А вот int() не умеет напрямую конвертировать строку с точкой: int('3.14') вызовет ошибку, даже если число выглядит корректным.
Вывод результата через f-строку
Когда число получено и вычисление выполнено, остаётся последний шаг — показать результат пользователю в читаемом виде. f-строка — самый удобный для этого инструмент.
Перед открывающей кавычкой ставится буква f, а внутри строки переменные или выражения пишутся прямо в фигурных скобках {}:
name = input('Имя: ')
age = int(input('Возраст: '))
print(f'Привет, {name}! Тебе {age} лет.')
Python вычисляет всё, что стоит внутри {}, и подставляет результат в строку. Числа, строки, булевы значения — всё подставляется автоматически, без дополнительных преобразований.
В фигурных скобках можно писать не только имя переменной, но и любое выражение:
side = float(input('Сторона квадрата: '))
print(f'Площадь квадрата: {side ** 2}')
Здесь side 2 вычисляется прямо внутри строки — никакой промежуточной переменной не нужно.
Теперь можно собрать полный сценарий работы с пользовательским вводом в четыре шага:
Вызвать
input()с подсказкой и сохранить результат в переменную.Обернуть вызов в
int()илиfloat(), чтобы получить число.Выполнить нужное вычисление.
Вывести результат через
print()с f-строкой.
Вот как это выглядит целиком:
width = float(input('Ширина прямоугольника: '))
height = float(input('Высота прямоугольника: '))
area = width * height
print(f'Площадь прямоугольника {width} × {height} = {area}')
Пользователь вводит два числа, программа их перемножает и выводит читаемый ответ — четыре строки кода, покрывающие весь цикл от ввода до вывода.
Единственное синтаксическое требование — не забывать букву f перед кавычкой. Без неё фигурные скобки останутся в тексте как есть и никаких подстановок не произойдёт.
Ошибка ValueError при некорректном вводе
До этого момента мы предполагали, что пользователь вводит корректное число. Но на практике это не гарантировано: пользователь может ошибиться, ввести текст вместо цифры или поставить запятую вместо точки.
Что происходит в таком случае? Если пользователь вводит двадцать вместо 20, Python выдаст:
age = int(input('Введите возраст: '))
# Пользователь вводит: двадцать
# ValueError: invalid literal for int() with base 10: 'двадцать'
Программа не продолжает работу — она прерывается с сообщением об ошибке. То же произойдёт с float(), если строка не выглядит как число:
price = float(input('Цена: '))
# Пользователь вводит: 3,14 (запятая вместо точки)
# ValueError: could not convert string to float: '3,14'
Ключевая идея простая: int() и float() ожидают строку, которая содержит корректное число — и ничего лишнего. Буквы, запятые вместо точек, пустая строка — всё это вызовет ValueError.
Пока что у нас нет инструмента, чтобы перехватить такую ошибку и попросить пользователя ввести данные заново — это тема отдельного урока про try/except. На данном этапе достаточно понять: ValueError возникает предсказуемо, когда строка не соответствует ожидаемому числовому формату. Это не сбой Python, а явный сигнал о несоответствии типов.
Задача 1
Пользователь запустил программу и ввёл текст 42. Функция input() вернула это значение. Какой тип имеет возвращённое значение?
Задача 2
Что выведет следующий код, если пользователь введёт 3?
x = input('Число: ')
print(x + x)
Задача 3
Какое из следующих выражений вызовет ошибку ValueError?
Задача 4
Что выведет следующий код, если пользователь введёт 7?
n = int(input('Число: '))
print(f'Квадрат числа {n} равен {n * n}')
Напишите только то, что появится в терминале после нажатия Enter.
Задача 5
Какая из следующих f-строк содержит синтаксическую ошибку?
Задача 6
Программист хочет запросить у пользователя рост в метрах (например, 1.75) и сохранить как число с плавающей точкой. Какой код правильный?
Задача 7
Возраст в следующем году
Во входных данных даны две строки: имя и текущий возраст. Считайте их по порядку с помощью input() без текста-подсказки, преобразуйте возраст в int и выведите одну строку вида Привет, Анна! В следующем году тебе будет 31.
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Задачи к уроку
- Ввод от пользователя и преобразование типов — задача по Python
Практическая задача по теме «Ввод от пользователя и преобразование типов» с проверкой ответа онлайн.
Продолжить с сохранением прогресса
Перейдите к уроку в учебном кабинете.
