Input: примеры (PYTHON)

Функция input в языке Python: подробный разбор с примерами
Раздел: Встроенные функции, Ввод/вывод
input([prompt]): str

Базовые принципы работы функции input

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

Основные характеристики функции:

  • Всегда возвращает строку (тип str)
  • Принимает один необязательный аргумент - строку приглашения (prompt)
  • Считывает данные до символа новой строки (не включая его)
  • Вызывает исключение EOFError при преждевременном завершении ввода

Синтаксис функции: input([prompt]), где prompt - строка, которая выводится на экран перед ожиданием ввода.

Простые примеры использования

Базовый вызов функции без параметров:

name = input()
print(f"Привет, {name}!")
Анна
Привет, Анна!

Использование с параметром prompt:

age = input("Введите ваш возраст: ")
print(f"Вам {age} лет")
Введите ваш возраст: 25
Вам 25 лет

Преобразование введенных данных в числовой формат:

number = int(input("Введите целое число: "))
result = number * 2
print(f"Удвоенное значение: {result}")
Введите целое число: 7
Удвоенное значение: 14

Альтернативные функции в Python

В Python существуют другие способы получения пользовательского ввода:

  • sys.stdin.read() - читает данные до EOF
  • sys.stdin.readline() - читает одну строку из stdin
  • getpass.getpass() - скрывает вводимый текст (для паролей)

Функция input() оптимальна для интерактивных консольных программ. Для чтения файлов или работы с管道 лучше использовать методы модуля sys.

Аналоги функции в других языках

В разных языках программирования существуют аналогичные механизмы:

JavaScript (браузер):

let name = prompt("Введите ваше имя:");
console.log(`Привет, ${name}!`);
Отображается диалоговое окно с полем ввода

Java:

import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Введите число: ");
int num = scanner.nextInt();
Введите число: 42

C#:

Console.Write("Введите текст: ");
string input = Console.ReadLine();
Console.WriteLine($"Вы ввели: {input}");
Введите текст: пример
Вы ввели: пример

PHP:

$input = fgets(STDIN);
echo "Вы ввели: $input";
пример
Вы ввели: пример

Основное отличие Python - функция всегда возвращает строку, тогда как в других языках часто требуется явное указание типа данных.

Распространенные ошибки

Ошибка преобразования типов:

number = int(input("Введите число: "))
print(number * 2)
Введите число: abc
ValueError: invalid literal for int() with base 10: 'abc'

Решение - обработка исключений:

try:
    number = int(input("Введите число: "))
    print(number * 2)
except ValueError:
    print("Ошибка: необходимо ввести число")
Введите число: abc
Ошибка: необходимо ввести число

Неучтенный символ новой строки при чтении нескольких значений:

name = input("Имя: ")
age = input("Возраст: ")
print(f"{name}: {age}")
Имя: Иван
Возраст: 25
Иван: 25

Проблемы с кодировкой в Windows:

text = input("Введите текст с кириллицей: ")
print(text)
Введите текст с кириллицей: привет
����������

Решение - настройка кодировки консоли или использование sys.stdin.

Изменения в последних версиях Python

В Python 3 функция input() заменила raw_input() из Python 2, которая возвращала строку без оценки. В Python 2 функция input() выполняла eval() на введенной строке, что создавало уязвимости безопасности.

Сравнение:

# Python 2:
# input() оценивает ввод как выражение Python
# raw_input() всегда возвращает строку

# Python 3:
# input() всегда возвращает строку

Начиная с Python 3.8, улучшена производительность и обработка ошибок ввода/вывода.

Расширенные примеры использования

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

Пример python
data = input("Введите три числа через пробел: ")
a, b, c = map(int, data.split())
print(f"Сумма: {a + b + c}")
Введите три числа через пробел: 10 20 30
Сумма: 60

Бесконечный цикл ввода с условием выхода:

Пример python
numbers = []
while True:
    value = input("Введите число (или 'стоп' для завершения): ")
    if value.lower() == 'стоп':
        break
    try:
        numbers.append(float(value))
    except ValueError:
        print("Ошибка: введите число или 'стоп'")
print(f"Среднее значение: {sum(numbers)/len(numbers) if numbers else 0}")
Введите число (или 'стоп' для завершения): 10
Введите число (или 'стоп' для завершения): 20
Введите число (или 'стоп' для завершения): стоп
Среднее значение: 15.0

Использование в генераторах списков:

Пример python
count = 3
names = [input(f"Введите имя {i+1}: ") for i in range(count)]
print(f"Приветствуем: {', '.join(names)}")
Введите имя 1: Анна
Введите имя 2: Борис
Введите имя 3: Виктор
Приветствуем: Анна, Борис, Виктор

Валидация ввода с регулярными выражениями:

Пример python
import re
while True:
    email = input("Введите email: ")
    if re.match(r'^[\w\.-]+@[\w\.-]+\.\w+$', email):
        print(f"Корректный email: {email}")
        break
    print("Некорректный формат email")
Введите email: user@example.com
Корректный email: user@example.com

Чтение пароля без отображения символов:

Пример python
import getpass
password = getpass.getpass("Введите пароль: ")
print(f"Пароль принят, длина: {len(password)} символов")
Введите пароль:
Пароль принят, длина: 8 символов

Обработка EOF (Ctrl+D/Ctrl+Z):

Пример python
try:
    text = input("Введите текст: ")
    print(f"Вы ввели: {text}")
except EOFError:
    print("\nВвод завершен досрочно")
Введите текст: [пользователь нажал Ctrl+D]
Ввод завершен досрочно

питон input function comments

En
Input Read input from user