Ввод данных: функция input()

Ввод данных: функция input()

Все программы, которые мы писали до этого, работали с данными, заранее вписанными в код. Но реальные программы должны взаимодействовать с пользователем: спрашивать имя, получать число, принимать ответы. Функция input() — это основной способ получить данные от пользователя в Python.

Базовое использование

Вызов input() приостанавливает выполнение программы и ждёт, пока пользователь введёт текст и нажмёт Enter. После нажатия Enter функция возвращает введённую строку:

name = input()
print("Привет,", name)

Запустите это — Python остановится на первой строке и будет ждать ввода. Вы пишете имя, нажимаете Enter — и программа выводит приветствие.

Подсказка для пользователя

Аргумент input() — это подсказка (prompt), которая выводится перед ожиданием ввода. Всегда добавляйте пробел в конец подсказки, чтобы курсор не прилипал к тексту:

name = input("Как вас зовут? ")
city = input("Из какого вы города? ")

print(f"Привет, {name} из {city}!")

Вывод будет выглядеть так:

Как вас зовут? Алиса
Из какого вы города? Москва
Привет, Алиса из Москвы!

input() ВСЕГДА возвращает строку

Это самое важное, что нужно запомнить про input(). Даже если пользователь введёт 42, функция вернёт строку "42", а не число 42. Это часто становится источником ошибок у начинающих.

Попробуйте:

age = input("Сколько вам лет? ")
print(type(age))  # <class 'str'> — не int!

Если вы попытаетесь сразу использовать age как число, Python выдаст ошибку при арифметических операциях.

Преобразование ввода в нужный тип

Поскольку input() всегда возвращает строку, нам нужно явно преобразовать её в нужный тип — с помощью int(), float() или bool():

age_str = input("Сколько вам лет? ")
age = int(age_str)
print(f"Через 10 лет вам будет {age + 10} лет")

Чаще всего преобразование записывают сразу в одну строку, без промежуточной переменной:

age = int(input("Сколько вам лет? "))
price = float(input("Введите цену товара: "))

Это более компактная и читаемая запись: input() получает строку, int() (или float()) сразу её преобразует.

Работа с несколькими значениями

Часто нужно запросить несколько значений подряд:

first = input("Введите первое число: ")
second = input("Введите второе число: ")

num1 = float(first)
num2 = float(second)

total = num1 + num2
average = total / 2

print(f"Сумма: {total}")
print(f"Среднее: {average:.2f}")

Проблема: невалидный ввод

Что произойдёт, если пользователь введёт "привет" там, где ожидается число?

age = int(input("Возраст: "))   # пользователь вводит "привет"
# ValueError: invalid literal for int() with base 10: 'привет'

Программа упадёт с ошибкой ValueError. Для production-кода нужна обработка ошибок — мы изучим try/except в модуле 11. Пока достаточно знать об этой проблеме и считать, что пользователь всегда вводит корректные данные.

Ввод нескольких значений из одной строки

Иногда удобно попросить пользователя ввести несколько значений через пробел в одну строку, а затем разбить её:

line = input("Введите два числа через пробел: ")
parts = line.split()      # разбить строку по пробелам → список строк
a = int(parts[0])
b = int(parts[1])
print(f"Сумма: {a + b}")

Здесь split() — метод строк, который мы подробно изучим в модуле 7. Пока просто запомните, что он разбивает строку по пробелам и возвращает список частей.

Типичный шаблон: калькулятор

Соберём все знания модуля вместе — напишем простейший калькулятор:

a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} * {b} = {a * b}")

if b != 0:
    print(f"{a} / {b} = {a / b:.4f}")
else:
    print("Деление на ноль невозможно")

Здесь мы впервые используем if/else — условный оператор. Мы изучим его подробно в модуле 3, а пока можно воспринимать это как «если b не равно нулю — делим, иначе — пишем предупреждение».

Проверь себя

Что выведет этот код, если пользователь введёт "5"?

x = input("Число: ")
print(x * 3)

Поскольку input() возвращает строку, а * для строк означает повторение, результат будет 555 (строка "5" повторена 3 раза), а не 15. Чтобы получить 15, нужно написать int(input("Число: ")) * 3.

Итог

  • input() приостанавливает программу, ждёт ввода пользователя и возвращает строку.
  • Аргумент input("подсказка: ") выводится перед ожиданием ввода; добавляйте пробел в конце.
  • input() всегда возвращает str — даже если пользователь ввёл цифры.
  • Для получения числа: int(input(...)) или float(input(...)).
  • Невалидный ввод (буквы там, где ожидается число) вызывает ValueError.
  • На практике всегда предусматривайте обработку ошибок при работе с пользовательским вводом.

Поздравляем с завершением первого модуля! Вы освоили фундамент Python: переменные, типы данных (int, float, str, bool, None), преобразование типов и взаимодействие с пользователем. В следующем модуле разберём операторы и выражения — научимся сравнивать значения и строить логические условия.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике