Урок курса

Ввод от пользователя и преобразование типов

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') даёт 25
  • float() — превращает строку в число с плавающей точкой: 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 вычисляется прямо внутри строки — никакой промежуточной переменной не нужно.

Теперь можно собрать полный сценарий работы с пользовательским вводом в четыре шага:

  1. Вызвать input() с подсказкой и сохранить результат в переменную.

  2. Обернуть вызов в int() или float(), чтобы получить число.

  3. Выполнить нужное вычисление.

  4. Вывести результат через 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

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Задачи к уроку

Все задачи курса →

Продолжить с сохранением прогресса

Перейдите к уроку в учебном кабинете.

Перейти к интерактивному уроку