Как получать строки от пользователя в Python: основы input
Основное решение: функция input()
В Python для ввода данных с клавиатуры используется встроенная функция input(). Она приостанавливает выполнение программы, ожидает, пока пользователь нажмет Enter, и возвращает введенную строку. Пример кода:
name = input()
print(f"Привет, {name}!")ввод данных в строку python (ввод данных в строку python)
При запуске программа ждет ввода. После ввода строки и нажатия Enter переменная name получает значение, которое затем выводится. Функция input() всегда возвращает строку, даже если пользователь ввел число. Поэтому для математических операций требуется явное преобразование.
Варианты использования input()
Как добавить приглашение к вводу?
Функция input() принимает необязательный аргумент - строку-приглашение, которая выводится перед ожиданием ввода:
city = input("Введите название города: ")
print(f"Вы живете в городе {city}.")
Приглашение помогает пользователю понять, какие данные ожидает программа.
Как ввести число и использовать его в вычислениях?
Поскольку input() возвращает строку, для получения числа нужно явно преобразовать результат с помощью int() или float():
age_str = input("Сколько вам лет? ")
age = int(age_str)
print(f"Через 5 лет вам будет {age + 5}.")
Проблема: если пользователь введет нечисловое значение (например, "двадцать"), возникнет исключение ValueError. Для надежности следует использовать блок try-except или цикл проверки.
while True:
try:
age = int(input("Введите возраст: "))
break
except ValueError:
print("Ошибка: введите целое число.")
Как ввести несколько значений в одной строке?
Метод split() разбивает строку по пробелам (или другому разделителю) и возвращает список строк. Это удобно для ввода нескольких данных:
data = input("Введите имя и возраст через пробел: ").split()
name = data[0]
age = int(data[1])
print(f"{name}, {age} лет")
Ошибка: если пользователь введет больше или меньше значений, чем ожидается, возможен IndexError. Рекомендуется проверять длину списка.
data = input("Введите два числа через пробел: ").split()
if len(data) != 2:
print("Требуется ровно два значения.")
else:
a, b = map(float, data)
print(f"Сумма: {a + b}")
Как ввести несколько строк в цикле?
Для ввода заранее неизвестного количества строк удобно использовать цикл for или while:
n = int(input("Сколько имен вы хотите ввести? "))
names = []
for i in range(n):
name = input(f"Имя {i+1}: ")
names.append(name)
print("Список имен:", names)
Как вводить данные до специального стоп-слова?
Если количество вводов заранее неизвестно, можно использовать бесконечный цикл с условием выхода:
lines = []
while True:
line = input("Введите текст (или 'stop' для завершения): ")
if line.lower() == 'stop':
break
lines.append(line)
print("Введенные строки:")
for l in lines:
print(l)
Как ввести пароль, чтобы он не отображался?
Для консольного ввода пароля без эха используется модуль getpass:
import getpass
password = getpass.getpass("Введите пароль: ")
print("Пароль принят.")
Этот способ не выводит вводимые символы на экран, обеспечивая безопасность.
Как считать все строки из стандартного ввода (например, при перенаправлении файла)?
Для работы с конвейером или перенаправлением ввода используется sys.stdin.read() или чтение строки за строкой:
import sys
print("Введите текст (Ctrl+D / Ctrl+Z для завершения):")
text = sys.stdin.read()
print("Вы ввели:")
print(text)
Особенность: при использовании sys.stdin.read() программа будет ждать конца файла (EOF). В интерактивном режиме это может быть неудобно.
Расширенные примеры работы с вводом строк
Пример 1. Ввод чисел с проверкой и вычисление среднего
Программа запрашивает числа, пока пользователь не введет 'end', затем выводит среднее арифметическое.
numbers = []
while True:
value = input("Введите число (end для завершения): ")
if value.lower() == 'end':
break
try:
num = float(value)
numbers.append(num)
except ValueError:
print("Ошибка: введите число или 'end'.")
if numbers:
average = sum(numbers) / len(numbers)
print(f"Среднее значение: {average:.2f}")
else:
print("Числа не введены.")
Введите число (end для завершения): 10 Введите число (end для завершения): 20 Введите число (end для завершения): end Среднее значение: 15.00
Пример 2. Ввод данных для создания словаря
Пользователь вводит пары ключ-значение через двоеточие, программа формирует словарь.
dictionary = {}
n = int(input("Сколько пар ввести? "))
for _ in range(n):
pair = input("Введите ключ:значение: ")
if ':' not in pair:
print("Пропускаем: нет двоеточия.")
continue
key, value = pair.split(':', 1)
dictionary[key.strip()] = value.strip()
print("Словарь:", dictionary)
Сколько пар ввести? 2
Введите ключ:значение: name: Иван
Введите ключ:значение: age: 25
Словарь: {'name': 'Иван', 'age': '25'}
Пример 3. Ввод с использованием sys.stdin для обработки большого объема данных
Программа читает все строки из stdin, удаляет пустые строки и выводит их количество.
import sys
lines = [line.rstrip() for line in sys.stdin if line.strip()]
print(f"Непустых строк: {len(lines)}")
$ echo -e "один\n\nдва\nтри" | python script.py Непустых строк: 3
Пример 4. Ввод с преобразованием строки в список чисел с помощью map
user_input = input("Введите числа через запятую: ")
numbers = list(map(int, user_input.split(',')))
print("Сумма чисел:", sum(numbers))
Введите числа через запятую: 1,2,3,4 Сумма чисел: 10
Пример 5. Безопасный ввод пароля с дополнительной проверкой длины
import getpass
while True:
pwd = getpass.getpass("Придумайте пароль (не менее 6 символов): ")
if len(pwd) >= 6:
break
print("Пароль слишком короткий.")
print("Пароль принят.")
Придумайте пароль (не менее 6 символов): Пароль слишком короткий. Придумайте пароль (не менее 6 символов): Пароль принят.
Пример 6. Ввод команд с выбором действия (простое меню)
while True:
command = input("Введите команду (add, show, exit): ").strip().lower()
if command == 'exit':
break
elif command == 'add':
item = input("Что добавить? ")
print(f"Добавлено: {item}")
elif command == 'show':
print("Список пуст (демонстрация).")
else:
print("Неизвестная команда.")
Введите команду (add, show, exit): add Что добавить? молоко Добавлено: молоко Введите команду (add, show, exit): exit