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

Раздел: Основы Python -> Инструкции по вводу

Функция input() в Python 3

Функция input() читает одну строку из стандартного ввода и возвращает её как объект str. Приглашение выводится перед чтением. Завершающий символ новой строки в результат не входит.

Как получить строку от пользователя и показать её в ответе?

name = input('Имя: ')
print('Привет, ' + name + '!')

функция input python 3 (функция input() в python 3)

Имя: Анна
Привет, Анна!

переменная input python (сохранение ввода в переменную python)

Основной способ состоит из вызова input() и сохранения результата в переменной. Для соединения строк применяется оператор +. Если пользователь ничего не введёт, значение будет пустой строкой.

Далее рассмотрены варианты для чисел, нескольких значений, проверки данных и организации меню.

Как получить целое число, а не строку?

age_text = input('Возраст: ')
age = int(age_text)
print('Через год:', age + 1)
Возраст: 20
Через год: 21

Цель: преобразовать строку в int. Случай: возраст, количество, номер пункта. При неверном вводе возникает ValueError.

Как получить число с плавающей точкой?

price_text = input('Цена: ')
price = float(price_text)
print('С налогом:', price * 1.2)
Цена: 100
С налогом: 120.0

Цель: работать с дробными значениями. Случай: цена, расстояние, вес. Для десятичной запятой применяется замена запятой на точку.

Как прочитать несколько значений в одной строке?

data = input('Два числа: ').split()
a = int(data[0])
b = int(data[1])
print('Сумма:', a + b)
Два числа: 4 7
Сумма: 11

Цель: разбить строку на части. Случай: координаты, пары чисел, списки. Метод split() по умолчанию делит по пробелам.

Как безопасно обработать неверный ввод?

while True:
    text = input('Целое число: ')
    try:
        value = int(text)
        break
    except ValueError:
        print('Нужно целое число')
print('Квадрат:', value * value)
Целое число: abc
Нужно целое число
Целое число: 5
Квадрат: 25

Цель: не завершать программу при ошибке. Случай: интерактивные программы. Цикл повторяет запрос, пока преобразование не пройдёт.

Как завершить ввод специальным словом?

items = []
while True:
    line = input('Строка или stop: ')
    if line == 'stop':
        break
    items.append(line)
print(items)
Строка или stop: один
Строка или stop: два
Строка или stop: stop
['один', 'два']

Цель: собрать несколько строк. Случай: список дел, заметки, команды. Слово stop служит сигналом окончания.

Как получить пароль без отображения символов?

import getpass
password = getpass.getpass('Пароль: ')
print('Длина:', len(password))
Пароль: 
Длина: 8

Цель: скрыть ввод. Случай: пароли и секретные данные. Модуль getpass не показывает символы в терминале.

Как обработать конец файла или Ctrl+D?

try:
    line = input()
except EOFError:
    print('Ввод завершён')
Ввод завершён

Цель: корректно завершить чтение. Случай: запуск скрипта с перенаправленным вводом. Исключение EOFError возникает при отсутствии данных.

Проблема: input() всегда возвращает str. Сравнение строки и числа даёт неожиданный результат.

value = input('Число: ')
print(value == 5)
Число: 5
False

Решение: преобразование через int() или float().

Проблема: ValueError при преобразовании. Решение: try и except.

Проблема: лишние пробелы в начале и конце. Решение: strip().

text = input('Код: ').strip()
print(len(text))
Код:   123  
3

Проблема: EOFError в неинтерактивном режиме. Решение: обработка исключения.

Проблема: пустая строка при нажатии Enter. Решение: проверка условия line == ''.

Расширенные примеры input() в Python 3

Ниже собраны подробные примеры с пояснениями. Каждый блок содержит код и результат.

Пример 1. Сумма чисел с плавающей точкой из одной строки.

Пример
line = input('Числа через пробел: ')
parts = line.split()
total = 0.0
for part in parts:
    total += float(part)
print('Сумма:', total)
Числа через пробел: 1.5 2 3.5
Сумма: 7.0

Метод split() создаёт список строк. Цикл for поочерёдно преобразует каждую часть в float. Переменная total накапливает сумму. Если одна из частей не является числом, возникает ValueError.

Пример 2. Меню с выбором пункта.

Пример
print('1 - старт')
print('2 - настройки')
print('0 - выход')
choice = input('Пункт: ')
if choice == '1':
    print('Старт')
elif choice == '2':
    print('Настройки')
elif choice == '0':
    print('Выход')
else:
    print('Неизвестный пункт')
1 - старт
2 - настройки
0 - выход
Пункт: 2
Настройки

Ввод сравнивается со строковыми значениями. Для числового выбора применяется int(choice). Обработка else показывает реакцию на неизвестный пункт.

Пример 3. Ввод нескольких строк до пустой строки.

Пример
lines = []
while True:
    text = input('Строка: ')
    if text == '':
        break
    lines.append(text)
print('Количество:', len(lines))
print(lines)
Строка: первый
Строка: второй
Строка: 
Количество: 2
['первый', 'второй']

Пустая строка служит условием остановки. Список lines хранит введённые значения. Такой подход удобен для заметок или блока текста.

Пример 4. Ввод координат точки.

Пример
x_text, y_text = input('Координаты x y: ').split()
x = float(x_text.replace(',', '.'))
y = float(y_text.replace(',', '.'))
print('Точка:', x, y)
print('Квадрат расстояния:', x * x + y * y)
Координаты x y: 3,5 4
Точка: 3.5 4.0
Квадрат расстояния: 28.25

Распаковка двух значений идёт после split(). Замена запятой на точку помогает при вводе дробей в русской раскладке. Если частей не две, возникает ValueError.

Пример 5. Ввод словаря парами ключ=значение.

Пример
data = {}
while True:
    pair = input('Пара ключ=значение или stop: ')
    if pair == 'stop':
        break
    key, value = pair.split('=')
    data[key.strip()] = value.strip()
print(data)
Пара ключ=значение или stop: имя=Анна
Пара ключ=значение или stop: город=Москва
Пара ключ=значение или stop: stop
{'имя': 'Анна', 'город': 'Москва'}

Метод split('=') делит строку на две части. Метод strip() удаляет пробелы вокруг ключа и значения. Если знак равенства отсутствует, возникает ValueError.

Пример 6. Проверка диапазона числа.

Пример
while True:
    text = input('Оценка от 1 до 5: ')
    try:
        mark = int(text)
    except ValueError:
        print('Нужно число')
        continue
    if 1 <= mark <= 5:
        break
    print('Число вне диапазона')
print('Оценка:', mark)
Оценка от 1 до 5: 7
Число вне диапазона
Оценка от 1 до 5: 4
Оценка: 4

Сначала проверяется преобразование, затем границы. Оператор continue возвращает к началу цикла. Такой шаблон часто применяется в формах.

Пример 7. Подтверждение yes или no.

Пример
answer = input('Продолжить? yes/no: ').lower()
if answer in ('yes', 'y', 'да', 'д'):
    print('Продолжение')
elif answer in ('no', 'n', 'нет', 'н'):
    print('Остановка')
else:
    print('Неизвестный ответ')
Продолжить? yes/no: Да
Продолжение

Метод lower() приводит ответ к нижнему регистру. Кортеж содержит допустимые варианты. Проверка in делает код коротким.

Пример 8. Чтение нескольких строк до конца файла.

Пример
import sys
lines = []
for line in sys.stdin:
    lines.append(line.rstrip())
print('Строк:', len(lines))
print(lines)
Строк: 0
[]

Цикл по sys.stdin читает все строки из потока. Метод rstrip() удаляет символ новой строки. В интерактивном терминале конец ввода задаётся через Ctrl+D в Linux или Ctrl+Z в Windows.

Пример 9. Ввод даты и преобразование.

Пример
from datetime import datetime
text = input('Дата в формате ДД.ММ.ГГГГ: ')
date = datetime.strptime(text, '%d.%m.%Y')
print('Год:', date.year)
print('День недели:', date.strftime('%A'))
Дата в формате ДД.ММ.ГГГГ: 31.12.2024
Год: 2024
День недели: Tuesday

Функция strptime разбирает строку по шаблону. При неверном формате возникает ValueError. Метод strftime возвращает название дня недели.

Пример 10. Ввод матрицы.

Пример
rows = int(input('Число строк: '))
matrix = []
for i in range(rows):
    line = input('Строка ' + str(i + 1) + ': ')
    row = [int(x) for x in line.split()]
    matrix.append(row)
for row in matrix:
    print(row)
Число строк: 2
Строка 1: 1 2 3
Строка 2: 4 5 6
[1, 2, 3]
[4, 5, 6]

Первое число задаёт количество строк. Каждая следующая строка делится на элементы и преобразуется в int. Список списков представляет матрицу.

Пример 11. Интерактивный калькулятор.

Пример
a = float(input('Первое число: '))
op = input('Операция: ')
b = float(input('Второе число: '))
if op == '+':
    result = a + b
elif op == '-':
    result = a - b
elif op == '*':
    result = a * b
elif op == '/':
    if b == 0:
        result = 'Деление на ноль'
    else:
        result = a / b
else:
    result = 'Неизвестная операция'
print('Результат:', result)
Первое число: 10
Операция: *
Второе число: 3
Результат: 30.0

Каждое значение читается отдельно. Для операции применяется строка. Проверка деления на ноль предотвращает ZeroDivisionError.

Пример 12. Ввод имени файла и проверка существования.

Пример
import os
path = input('Путь к файлу: ')
if os.path.exists(path):
    size = os.path.getsize(path)
    print('Размер:', size)
else:
    print('Файл не найден')
Путь к файлу: data.txt
Файл не найден

Модуль os проверяет наличие пути. Функция getsize возвращает размер в байтах. Если файл отсутствует, выводится сообщение.

Пример 13. Ввод списка чисел с ограничением количества.

Пример
count = int(input('Сколько чисел: '))
numbers = []
for i in range(count):
    value = float(input('Число ' + str(i + 1) + ': '))
    numbers.append(value)
print('Минимум:', min(numbers))
print('Максимум:', max(numbers))
Сколько чисел: 3
Число 1: 5
Число 2: -2
Число 3: 10
Минимум: -2.0
Максимум: 10.0

Количество задаётся заранее. Цикл for повторяется нужное число раз. Встроенные функции min и max находят крайние значения.

Пример 14. Ввод с таймаутом через select.

Пример
import select
import sys
print('Ожидание ввода 3 секунды')
ready, _, _ = select.select([sys.stdin], [], [], 3.0)
if ready:
    line = sys.stdin.readline().rstrip()
    print('Ввод:', line)
else:
    print('Время вышло')
Ожидание ввода 3 секунды
Время вышло

Модуль select проверяет готовность потока. Такой способ работает в Unix-подобных системах. В Windows поведение отличается.

Пример 15. Ввод секрета с подтверждением.

Пример
import getpass
first = getpass.getpass('Пароль: ')
second = getpass.getpass('Повтор: ')
if first == second and len(first) >= 8:
    print('Пароль принят')
else:
    print('Пароль не принят')
Пароль: 
Повтор: 
Пароль принят

Модуль getpass скрывает символы. Проверка сравнивает два ввода и длину. Условие можно расширить проверкой цифр и букв.

Функция input() в Python 3 - comments

En
функция input python 3 (python)