Функция input для ввода значений в Python

Раздел: Основы Python -> Файловый ввод-вывод

Ввод значения переменной в Python

Получение данных от пользователя во время выполнения программы - базовая операция. В Python существует несколько способов организовать ввод. Ниже рассмотрены основные подходы, их особенности и типичные сложности.

Как сохранить введённое пользователем значение в переменную?

Наиболее распространённый инструмент - встроенная функция input(). Она приостанавливает выполнение программы, выводит необязательную строку-подсказку и ожидает, пока пользователь не нажмёт Enter. Введённые символы возвращаются в виде строки.

name = input('Введите ваше имя: ')
print('Привет,', name)

ввод программ на python (ввод данных в программе python)

Введите ваше имя: Андрей
Привет, Андрей

Python file io (ввод-вывод файлов в python)

Код считывает строку и присваивает её переменной name. Если нужно получить число, требуется явное преобразование, иначе возникнет ошибка при арифметических операциях.

Распространённая ошибка: попытка сложить строку с числом. Например, age = input('Сколько вам лет? ') - после ввода age остаётся строкой. При попытке age + 1 возникнет TypeError. Решение - преобразовать: int(age) или применить int(input(...)).

Как ввести целое число и сразу присвоить его переменной?

Функцию int() можно применить непосредственно к результату input():

age = int(input('Сколько вам лет? '))
next_year = age + 1
print('Через год вам будет', next_year)

Python temp files (временные файлы в python)

Сколько вам лет? 25
Через год вам будет 26

Python index files (индексация файлов в python)

Проблема: если пользователь введёт не число (например, текст), программа вызовет ValueError. Желательно оборачивать преобразование в try-except или проверять ввод заранее.

Аналогично для дробных чисел используется float():

pi = float(input('Введите значение числа Пи: '))
print('Введено:', pi)

File python class (класс для работы с файлами в python)

Этот вариант удобен для математических расчётов, где нужна вещественная точность.

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

Метод split() строки разбивает ввод по пробелам, возвращая список подстрок. Затем можно присвоить каждому элементу отдельную переменную или распаковать:

x, y = input('Координаты (x y): ').split()
print('x =', x, 'y =', y)
# если нужны числа:
a, b = map(int, input('Два числа: ').split())
print('Сумма:', a + b)

Python file utf 8 (кодировка utf-8 для файлов в python)

Координаты (x y): 10 20
x = 10 y = 20
Два числа: 5 7
Сумма: 12

Python config files (конфигурационные файлы в python)

Здесь map() применяет функцию преобразования ко всем элементам списка. Такой способ эффективен при работе с большим количеством числовых данных в одной строке.

Ошибка: если количество введённых значений не совпадает с числом переменных слева от знака равенства, возникнет ValueError (слишком много или мало значений). Нужно либо использовать списки с одинаковым числом элементов, либо проверять длину списка.

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

Для защиты от некорректных данных используют циклы и обработку исключений. Пример запроса числа с повторным вводом пока пользователь не введёт целое:

while True:
    try:
        val = int(input('Введите целое число: '))
        break
    except ValueError:
        print('Ошибка: нужно ввести число.')
print('Вы ввели:', val)

Python copy file (копирование файла в python)

Введите целое число: abc
Ошибка: нужно ввести число.
Введите целое число: 42
Вы ввели: 42

Python log file (логирование в файл в python)

Этот шаблон применяется в формах ввода, калькуляторах, играх, где важна устойчивость к ошибкам.

Как ввести строку, содержащую пробелы, без разделения?

Функция input() считывает всю строку целиком, включая пробелы, до символа перевода строки. Если не применяется split(), пробелы сохраняются:

phrase = input('Напишите предложение: ')
print('Вы написали:', repr(phrase))

Python file methods (методы работы с файлами в python)

Напишите предложение:   Привет,   мир!  
Вы написали: '  Привет,   мир!  '

File models in python (модели файлов в python)

Такой ввод полезен для текстовых данных, которые должны быть сохранены с пробелами (адреса, описания).

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

Можно последовательно вызывать input() для каждой переменной:

first = input('Введите первое имя: ')
second = input('Введите второе имя: ')
print(first, 'и', second, 'приветствуют вас')

Этот подход прост для понимания и подходит, когда количество переменных известно заранее.

- Python file position (позиционирование в файле python)
- Python line find (поиск строки в файле python)
- Python csv file (работа с csv файлами в python)

Расширенные примеры ввода с обработкой и сложными структурами

Ввод нескольких чисел с преобразованием в список целых

Пример
numbers = list(map(int, input('Введите числа через пробел: ').split()))
print('Список чисел:', numbers)
print('Максимум:', max(numbers))
Введите числа через пробел: 45 12 78 3
Список чисел: [45, 12, 78, 3]
Максимум: 78

Пояснение: input().split() получает список строк, map(int, ...) преобразует каждую строку в число, а list() фиксирует результат в виде списка. Удобно для анализа произвольного количества чисел.

Ввод с ограничением по диапазону и повторным запросом

Пример
def get_bounded_integer(low, high):
    while True:
        try:
            val = int(input(f'Введите число от {low} до {high}: '))
            if low <= val <= high:
                return val
            print(f'Значение должно быть в диапазоне [{low}, {high}]')
        except ValueError:
            print('Ошибка: требуется целое число.')

age = get_bounded_integer(0, 150)
print('Возраст:', age)
Введите число от 0 до 150: 200
Значение должно быть в диапазоне [0, 150]
Введите число от 0 до 150: 25
Возраст: 25

Такой подход используется в формах регистрации, опросах - там, где данные должны попадать в допустимый интервал.

Ввод до тех пор, пока не будет введена пустая строка

Пример
lines = []
print('Вводите строки. Для завершения оставьте строку пустой:')
while True:
    line = input()
    if line == '':
        break
    lines.append(line)
print('Введённые строки:')
for i, l in enumerate(lines, 1):
    print(f'{i}: {l}')
Вводите строки. Для завершения оставьте строку пустой:
Первая
Вторая
Третья

Введённые строки:
1: Первая
2: Вторая
3: Третья

Применяется для чтения многострочного текста, заметок, списков задач - когда количество строк неизвестно.

Безопасный ввод структуры данных с помощью ast.literal_eval

Пример
import ast
user_input = input('Введите список чисел (например, [1, 2, 3]): ')
try:
    data = ast.literal_eval(user_input)
    if isinstance(data, list):
        print('Список:', data)
        print('Сумма элементов:', sum(data))
    else:
        print('Ожидался список.')
except (ValueError, SyntaxError):
    print('Некорректный ввод структуры данных.')
Введите список чисел (например, [1, 2, 3]): [4, 5, 6]
Список: [4, 5, 6]
Сумма элементов: 15

ast.literal_eval безопасно интерпретирует только литералы Python (строки, числа, списки, словари и т.д.), не выполняя произвольный код. Это удобно для конфигураций или загрузки данных, введённых пользователем.

Ввод с использованием регулярных выражений для проверки формата

Пример
import re
pattern = r'^\d{4}-\d{2}-\d{2}$'  # дата в формате ГГГГ-ММ-ДД
while True:
    date_str = input('Введите дату (ГГГГ-ММ-ДД): ')
    if re.match(pattern, date_str):
        print('Дата принята:', date_str)
        break
    print('Неверный формат. Попробуйте снова.')
Введите дату (ГГГГ-ММ-ДД): 2025-02-30
Неверный формат. Попробуйте снова.
Введите дату (ГГГГ-ММ-ДД): 2025-02-28
Дата принята: 2025-02-28

Регулярные выражения дают гибкий контроль над форматом ввода, например для номеров телефонов, кодов, идентификаторов.

Ввод с использованием модуля getpass для скрытого ввода пароля

Пример
import getpass
pwd = getpass.getpass('Введите пароль: ')
print('Пароль введён (длина', len(pwd), 'символов)')
Введите пароль:
(символы не отображаются)
Пароль введён (длина 8 символов)

Полезна для консольных приложений, где требуется скрыть вводимые символы. Важно: в некоторых средах (например, IDLE) может не работать; тогда следует использовать стандартный input().

Ввод значения переменной в Python - comments

En
Python ввести переменную (python)