Что такое функция input() в Python?

В языке программирования Python input() — это встроенная функция, основное назначение которой — получение данных от пользователя во время выполнения программы. Когда интерпретатор Python доходит до строки с вызовом этой функции, выполнение скрипта приостанавливается, на экран выводится приглашение для ввода (если оно указано), и программа ожидает, пока пользователь введёт текст с клавиатуры и нажмёт клавишу Enter. Всё, что было введено, функция input() возвращает в виде строки (str).

Проще говоря, input() — это мост между вашей программой и человеком, который её запустил. Она позволяет сделать скрипт интерактивным и динамичным, реагирующим на действия пользователя.

Как работает input(): базовый синтаксис

Синтаксис функции очень прост. В самых скобках можно (но не обязательно) передать строку-аргумент, которая будет служить подсказкой или вопросом для пользователя.

# Простейший вызов
user_data = input()

# Вызов с приглашением к вводу
name = input("Пожалуйста, введите ваше имя: ")
print(f"Привет, {name}!")

В первом случае программа просто будет ждать ввода, не выводя никакого сообщения. Во втором — пользователь увидит фразу «Пожалуйста, введите ваше имя: », введёт, например, «Анна», и эта строка будет сохранена в переменной name. Далее print() выведет «Привет, Анна!».

Ключевая особенность: input() всегда возвращает строку

Это самый важный момент, который часто вызывает путаницу у начинающих. Независимо от того, что ввёл пользователь — цифры, символы или слова — функция input() всегда возвращает данные в виде строки (тип данных str).

Рассмотрим на примере:

age = input("Сколько вам лет? ")  # Пользователь вводит: 25
print(type(age))  # Вывод: <class 'str'> — это строка!

# Попытка выполнить арифметическую операцию приведёт к ошибке
# result = age + 5  # TypeError: can only concatenate str (not "int") to str

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

Преобразование введённых данных

Для корректной работы с числами необходимо преобразование типов (type casting).

# Преобразование в целое число (int)
age_str = input("Введите ваш возраст: ")  # '30' (строка)
age_int = int(age_str)  # 30 (целое число)
birth_year = 2024 - age_int
print(f"Вы родились примерно в {birth_year} году")

Важно помнить, что преобразование int() или float() вызовет ошибку ValueError, если пользователь введёт что-то, что нельзя интерпретировать как число (например, буквы или пустую строку). Поэтому на практике такой код часто оборачивают в блок try...except для обработки исключений.

Практическое применение и примеры

Функция input() является краеугольным камнем для создания консольных программ, утилит, простых игр и интерактивных сценариев.

Пример 1: Простой калькулятор

print("Простой калькулятор")
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))
operation = input("Выберите операцию (+, -, *, /): ")

if operation == "+":
    result = a + b
elif operation == "-":
    result = a - b
elif operation == "*":
    result = a * b
elif operation == "/":
    if b != 0:
        result = a / b
    else:
        result = "Ошибка: деление на ноль!"
else:
    result = "Неизвестная операция"

print(f"Результат: {result}")

Пример 2: Анкета или опрос

print("Заполните небольшую анкету")
name = input("Ваше имя: ")
city = input("Ваш город: ")
hobby = input("Ваше хобби: ")

print("\n--- Ваши данные ---")
print(f"Имя: {name}")
print(f"Город: {city}")
print(f"Хобби: {hobby}")

Обработка ошибок и безопасность

При использовании input() стоит учитывать два основных момента:

  1. Обработка некорректного ввода: Всегда предусматривайте, что пользователь может ввести не то, что вы ожидаете. Используйте условные операторы и обработку исключений (try...except).
  2. Безопасность при выполнении кода (eval): Иногда начинающие программисты используют связку input() и опасной функции eval() для выполнения введённого кода. Делать этого категорически не рекомендуется, особенно в публичных или сетевых приложениях, так как это создаёт огромную уязвимость.
# ОПАСНО! Никогда не используйте такую конструкцию без крайней необходимости и проверок.
# user_code = input("Введите выражение: ")  # Пользователь может ввести: __import__('os').system('rm -rf /')
# result = eval(user_code)  # Это выполнит введённый код!

Заключение

Функция input() — это простой, но мощный инструмент для создания диалога между программой и пользователем в Python. Её ключевая особенность — всегда возвращать строку — определяет необходимость последующего преобразования типов для работы с числами. Освоение input(), наряду с условными операторами и циклами, открывает путь к написанию по-настоящему интерактивных консольных приложений, от простых опросников до текстовых квестов и утилит для обработки данных.

Источники