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, улучшена производительность и обработка ошибок ввода/вывода.
Расширенные примеры использования
Обработка нескольких значений в одной строке:
data = input("Введите три числа через пробел: ")
a, b, c = map(int, data.split())
print(f"Сумма: {a + b + c}")
Введите три числа через пробел: 10 20 30 Сумма: 60
Бесконечный цикл ввода с условием выхода:
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
Использование в генераторах списков:
count = 3
names = [input(f"Введите имя {i+1}: ") for i in range(count)]
print(f"Приветствуем: {', '.join(names)}")
Введите имя 1: Анна Введите имя 2: Борис Введите имя 3: Виктор Приветствуем: Анна, Борис, Виктор
Валидация ввода с регулярными выражениями:
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
Чтение пароля без отображения символов:
import getpass
password = getpass.getpass("Введите пароль: ")
print(f"Пароль принят, длина: {len(password)} символов")
Введите пароль: Пароль принят, длина: 8 символов
Обработка EOF (Ctrl+D/Ctrl+Z):
try:
text = input("Введите текст: ")
print(f"Вы ввели: {text}")
except EOFError:
print("\nВвод завершен досрочно")
Введите текст: [пользователь нажал Ctrl+D] Ввод завершен досрочно