Ввод информации в скриптах на Python: методы и примеры

Раздел: Основы Python -> Ввод/вывод данных

Основы ввода данных в Python

Как получить данные от пользователя в Python?

Наиболее распространённый способ — использование встроенной функции input(). Она читает строку из стандартного потока ввода (клавиатура) и возвращает её в виде строки. Для получения данных другого типа (числа, списки) требуется явное преобразование.

name = input('Введите ваше имя: ')
print('Привет,', name)
age = int(input('Введите ваш возраст: '))
print('Через год вам будет', age + 1)

программа python программа должна запрашивать (программа, которая запрашивает данные, на python)

Пояснение:

  1. Первая строка запрашивает имя и сохраняет его в переменную name как строку.
  2. Третья строка запрашивает возраст, но сразу преобразует результат в целое число с помощью int().
  3. После преобразования с числом можно выполнять арифметические операции.

Типичные ошибки:

  • ValueError — если пользователь вводит нечисловое значение, а ожидается число. Решение: использовать блок try/except.
  • Пустая строка — если пользователь сразу нажал Enter. Решение: проверять длину строки.

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

Если нужно ввести несколько данных, разделённых пробелами, применяется метод split() вместе с функцией map():

values = input('Введите два числа через пробел: ').split()
a, b = map(int, values)
print('Сумма:', a + b)

Объяснение:

  • .split() разбивает строку на список слов (по умолчанию по пробелам).
  • map(int, values) применяет преобразование к каждому элементу списка.
  • Можно сразу присвоить переменным, если количество элементов известно.

Если введено меньше или больше значений, возникнет ошибка ValueError при распаковке. Решение: сохранять результат map в список и проверять его длину.

Как защитить программу от некорректного ввода?

Блок try/except позволяет перехватить исключение и дать пользователю возможность повторить ввод:

while True:
    try:
        number = int(input('Введите целое число: '))
        break
    except ValueError:
        print('Ошибка! Введено не число. Попробуйте снова.')

Цикл while True выполняется, пока не будет успешного преобразования. Это гарантирует, что переменная number будет содержать корректное значение.

Если пользователь прервёт ввод (Ctrl+C), программа остановится. Можно добавить обработку KeyboardInterrupt.

Как вводить данные для олимпиадных задач?

Для быстрого чтения большого количества строк используют модуль sys.stdin. Метод sys.stdin.readline() читает одну строку, а sys.stdin.read() — весь поток до конца.

import sys

data = sys.stdin.read().split()
print('Введено чисел:', len(data))

Этот способ полезен, когда данные подаются из файла или через перенаправление ввода.

При использовании sys.stdin.read() программа будет ждать, пока не будет закрыт поток (например, по Ctrl+D в Unix).

Как запросить данные с явным указанием типа?

Можно написать функцию, которая запрашивает ввод до тех пор, пока не будет получено значение нужного типа:

def input_int(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print('Требуется целое число.')

a = input_int('Введите a: ')
b = input_int('Введите b: ')
print('Произведение:', a * b)

Такая функция повышает читаемость кода и уменьшает дублирование проверок.

Расширенные примеры ввода данных

Пример 1: Ввод чисел и вычисление среднего

Программа запрашивает три числа и выводит их среднее арифметическое.

Пример
numbers = []
for i in range(3):
    while True:
        try:
            num = float(input(f'Введите число {i+1}: '))
            numbers.append(num)
            break
        except ValueError:
            print('Ошибка, введите число.')
average = sum(numbers) / len(numbers)
print(f'Среднее: {average:.2f}')
Введите число 1: 10
Введите число 2: 20
Введите число 3: 30
Среднее: 20.00

Пример 2: Ввод списка чисел и фильтрация

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

Пример
raw = input('Введите числа через пробел: ')
try:
    nums = list(map(float, raw.split()))
except ValueError:
    print('Не все элементы являются числами.')
    nums = []
positive = [x for x in nums if x > 0]
print('Положительные числа:', positive)
Введите числа через пробел: 5 -3 0 2.5 -1.2 8
Положительные числа: [5.0, 2.5, 8.0]

Пример 3: Ввод строки с проверкой длины

Запрос пароля, который должен содержать не менее 8 символов.

Пример
while True:
    password = input('Придумайте пароль (не менее 8 символов): ')
    if len(password) >= 8:
        print('Пароль принят.')
        break
    else:
        print('Слишком короткий пароль.')
Придумайте пароль (не менее 8 символов): 123
Слишком короткий пароль.
Придумайте пароль (не менее 8 символов): qwerty12
Пароль принят.

Пример 4: Многострочный ввод до пустой строки

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

Пример
lines = []
print('Вводите строки. Для завершения оставьте строку пустой.')
while True:
    line = input()
    if line == '':
        break
    lines.append(line)
print(f'Введено строк: {len(lines)}')
Вводите строки. Для завершения оставьте строку пустой.
Первая строка
Вторая строка
(Enter)
Введено строк: 2

Пример 5: Использование sys.stdin.readline для быстрого ввода

Считывание n чисел из стандартного ввода (первая строка содержит n, затем сами числа).

Пример
import sys

first = sys.stdin.readline().strip()
if first:
    n = int(first)
    numbers = []
    for _ in range(n):
        numbers.append(int(sys.stdin.readline()))
    print('Максимум:', max(numbers))
else:
    print('Нет данных.')
Ввод:
3
10
20
15
Вывод:
Максимум: 20

Программа, которая запрашивает данные, на Python - comments

En
программа python программа должна запрашивать (python)