Стандартный ввод в Python: как организовать общение с пользователем

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

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

Наиболее эффективный способ ввода данных с клавиатуры

В Python для получения данных от пользователя используется встроенная функция input(). Она приостанавливает выполнение программы и ожидает строку текста, завершённую нажатием клавиши Enter. Возвращает всегда строку (тип str).

name = input("Как вас зовут? ")
print("Привет, " + name)

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

Как вас зовут? Мария
Привет, Мария

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

Типичная ошибка:

Программисты новички часто пытаются сразу использовать число, введённое через input(), в арифметических операциях, не преобразуя тип. Это вызывает TypeError.

age = input("Сколько вам лет? ")
print("Через год вам будет", age + 1)  # Ошибка!

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

TypeError: can only concatenate str (not "int") to str

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

Решение:

Явно преобразовать строку в нужный тип с помощью int(), float() и т.д.

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

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

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

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

Как ввести целое число без риска ошибки преобразования?

Используйте int(input()). Однако если пользователь введёт не число, возникнет ValueError. Чтобы этого избежать, применяют try/except (см. следующий вариант).

year = int(input("Введите год рождения: "))
print("Вы родились в", year)

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

Проблема: ввод "ABC" вызовет исключение.

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

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

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

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

Введите два числа через пробел: 10 20
Сумма: 30

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

Ошибка: Если введено больше или меньше значений, чем ожидается, возникнет ValueError. Решение – проверять длину списка len(values).

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

Конструкция try / except перехватывает исключение и даёт возможность повторить ввод или вывести сообщение об ошибке.

while True:
    try:
        number = int(input("Введите целое число: "))
        break
    except ValueError:
        print("Ошибка: необходимо ввести целое число")
print("Вы ввели:", number)

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

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

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

Как ввести данные через стандартный поток ввода (например, при перенаправлении из файла)?

Модуль sys предоставляет объект stdin. Чтение одной строки: sys.stdin.readline(). Для чтения всего содержимого: sys.stdin.read(). Это удобно при автоматизированном тестировании или при работе с пайпами.

import sys
print("Введите несколько строк (Ctrl+D для завершения):")
data = sys.stdin.read()
print("Введено символов:", len(data))

File handle python (обработка файлов в python)

Примечание: при чтении из терминала sys.stdin.read() будет ждать, пока не встретит символ конца файла (EOF). На Windows – Ctrl+Z, на Linux/Mac – Ctrl+D.

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

Модуль getpass предоставляет функцию getpass(), которая читает ввод без эха.

from getpass import getpass
password = getpass("Введите пароль: ")
print("Пароль принят (скрыт)")

Замечание: работает только в терминале, в средах разработки может не поддерживаться.

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

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

Чтение матрицы неизвестного размера

Программа запрашивает размерность (строки и столбцы), затем построчно вводит элементы, преобразуя их в целые числа.

Пример
rows = int(input("Количество строк: "))
cols = int(input("Количество столбцов: "))
matrix = []
for i in range(rows):
    row = list(map(int, input(f"Строка {i+1}: ").split()))
    # Проверка количества элементов
    if len(row) != cols:
        raise ValueError("Неверное число столбцов")
    matrix.append(row)
print("Матрица:", matrix)
Количество строк: 2
Количество столбцов: 3
Строка 1: 1 2 3
Строка 2: 4 5 6
Матрица: [[1, 2, 3], [4, 5, 6]]

Ввод до пустой строки (цикл while)

Программа непрерывно принимает строки, пока пользователь не введёт пустую (Enter без текста). Затем выводит количество введённых строк.

Пример
lines = []
print("Вводите строки (пустая строка завершает ввод):")
while True:
    line = input()
    if line == "":
        break
    lines.append(line)
print("Введено строк:", len(lines))
Вводите строки (пустая строка завершает ввод):
Привет
Как дела?

Введено строк: 2

Ввод с проверкой диапазона для числовых значений

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

Пример
def input_int_in_range(prompt, low, high):
    while True:
        try:
            value = int(input(prompt))
            if low <= value <= high:
                return value
            else:
                print(f"Значение должно быть от {low} до {high}")
        except ValueError:
            print("Введите целое число")

age = input_int_in_range("Возраст (1-120): ", 1, 120)
print("Возраст принят:", age)
Возраст (1-120): 150
Значение должно быть от 1 до 120
Возраст (1-120): 30
Возраст принят: 30

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

Использование split с указанием разделителя, например запятой.

Пример
data = input("Введите имя, возраст и рост (через запятую): ").split(',')
name = data[0].strip()
age = int(data[1].strip())
height = float(data[2].strip())
print(f"Имя: {name}, возраст: {age}, рост: {height}")
Введите имя, возраст и рост (через запятую): Анна, 25, 1.68
Имя: Анна, возраст: 25, рост: 1.68

Чтение большого объёма данных через sys.stdin.readline

В задачах с большими входными данными (например, соревнования по программированию) используется построчное чтение через sys.stdin.readline(), которое быстрее, чем input().

Пример
import sys

n = int(sys.stdin.readline())
total = 0
for _ in range(n):
    number = int(sys.stdin.readline())
    total += number
print("Сумма:", total)
Входные данные:
3
10
20
30
Вывод:
Сумма: 60

ввод данных в программе Python - comments

En
ввод программ на python (python)