Синтаксис функции input() в языке Python
Функция input() в Python предназначена для получения данных от пользователя через стандартный поток ввода (обычно клавиатура). Вызов input() приостанавливает выполнение программы до тех пор, пока пользователь не введет строку и не нажмет Enter. Возвращаемое значение всегда является строкой, даже если введены цифры. Рассмотрим базовый синтаксис и различные сценарии использования.
Основной синтаксис функции input()
Синтаксис: input([prompt]). Необязательный аргумент prompt представляет собой строку, которая выводится перед ожиданием ввода. Функция возвращает введенную строку, из которой удален завершающий символ новой строки.
name = input("Введите ваше имя: ")
print(f"Привет, {name}!")Python method (методы в python)
Введите ваше имя: Анна Привет, Анна!
напишите оператор ввода в python (оператор ввода в python)
Как получить числовой ввод?
Поскольку input() возвращает строку, для работы с числами требуется явное преобразование с помощью int() или float().
age = int(input("Сколько вам лет? "))
print(f"Через год вам будет {age + 1}.")
Python синтаксис input (синтаксис функции input)
Сколько вам лет? 25 Через год вам будет 26.
Проблема: если пользователь введет нечисловое значение (например, "двадцать пять"), возникнет исключение ValueError.
Решение: обернуть преобразование в блок try/except.
try:
age = int(input("Сколько вам лет? "))
print(f"Через год вам будет {age + 1}.")
except ValueError:
print("Ошибка: необходимо ввести целое число.")
Как ввести несколько значений в одной строке?
Метод split() разбивает строку по пробелам (или другому разделителю). В сочетании с map() можно сразу преобразовать части в нужный тип.
a, b = map(int, input("Введите два числа через пробел: ").split())
print(f"Сумма: {a + b}")
Введите два числа через пробел: 10 20 Сумма: 30
Проблема: если количество введенных значений не равно числу переменных, возникнет ValueError.
Решение: либо использовать список list(map(...)), либо организовать проверку длины.
Как организовать повторный ввод до получения корректного значения?
Цикл while True с попыткой преобразования внутри try продолжает запрос, пока не будет введено корректное значение.
while True:
try:
age = int(input("Введите возраст (целое число): "))
break
except ValueError:
print("Ошибка. Попробуйте еще раз.")
print(f"Возраст: {age}")
Введите возраст (целое число): abc Ошибка. Попробуйте еще раз. Введите возраст (целое число): 30 Возраст: 30
Как скрыть вводимый текст (например, пароль)?
Функция getpass() из модуля getpass не отображает вводимые символы на экране.
import getpass
password = getpass.getpass("Введите пароль: ")
print("Пароль принят.")
Введите пароль: Пароль принят.
Проблема: в некоторых средах (например, IDLE) getpass может не работать корректно. В таком случае используется обычный input().
Как обработать пустой ввод?
Пустая строка (пользователь просто нажал Enter) может быть проверена через if not user_input.
name = input("Введите имя (или Enter для пропуска): ")
if not name:
name = "Гость"
print(f"Привет, {name}!")
Введите имя (или Enter для пропуска): Привет, Гость!
Расширенные примеры работы с input()
Пример 1. Ввод списка чисел с плавающей точкой и проверка диапазона.
# Запрос у пользователя трех чисел от 0 до 1
while True:
try:
values = list(map(float, input("Введите три числа от 0 до 1 через пробел: ").split()))
if len(values) != 3:
print("Требуется ровно три числа.")
continue
if any(v < 0 or v > 1 for v in values):
print("Числа должны быть в диапазоне [0,1].")
continue
break
except ValueError:
print("Ошибка: введите числа, разделенные пробелами.")
print("Введенные значения:", values)
Введите три числа от 0 до 1 через пробел: 0.5 1.2 0.3 Числа должны быть в диапазоне [0,1]. Введите три числа от 0 до 1 через пробел: 0.5 0.2 0.8 Введенные значения: [0.5, 0.2, 0.8]
Пример 2. Ввод строки с разделителем-запятой и удаление лишних пробелов.
items = input("Введите элементы через запятую: ").split(',')
items = [item.strip() for item in items]
print("Список элементов:", items)
Введите элементы через запятую: яблоко, груша, вишня Список элементов: ['яблоко', 'груша', 'вишня']
Пример 3. Ввод пароля с маскировкой (альтернативный способ, если getpass не поддерживается).
import sys
password = ""
print("Введите пароль (символы не отображаются): ", end='', flush=True)
while True:
ch = sys.stdin.read(1) # читаем по одному символу
if ch == '\n':
break
password += ch
print('*', end='', flush=True)
print()
print("Пароль принят.")
Введите пароль (символы не отображаются): *** Пароль принят.
Пример 4. Ввод с проверкой с помощью регулярного выражения (адрес электронной почты).
import re
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
while True:
email = input("Введите email: ").strip()
if re.match(pattern, email):
print("Email корректен.")
break
else:
print("Некорректный формат email. Попробуйте снова.")
Введите email: user@domain Некорректный формат email. Попробуйте снова. Введите email: user@domain.com Email корректен.
Пример 5. Ввод нескольких строк до пустой строки (многострочный ввод).
lines = []
print("Вводите строки (пустая строка завершает ввод):")
while True:
line = input()
if line == "":
break
lines.append(line)
print("Введенные строки:")
for l in lines:
print(l)
Вводите строки (пустая строка завершает ввод): Первая строка Вторая строка Введенные строки: Первая строка Вторая строка