Стандартный ввод-вывод в Python: от простых к расширенным сценариям
Основные функции ввода-вывода
Как организовать ввод данных с клавиатуры и вывод на экран в Python?
Наиболее эффективный способ - использовать встроенные функции input() и print(). input() считывает строку из стандартного потока ввода (обычно клавиатура), необязательно с приглашением. print() выводит данные в стандартный поток вывода (экран).
name = input("Введите имя: ")
print("Привет,", name)ввод программ на python (ввод данных в программе python)
Пояснение: input() принимает строку-приглашение, выводит его, ждет ввода и возвращает введенную строку. print() выводит аргументы, разделяя пробелом и добавляя перевод строки.
Типичные ошибки:
- Забыть преобразовать строку в число. Например, age = input("Возраст: ") - строка. Для вычислений нужно int(age).
- Использовать print без скобок в Python 3 - SyntaxError.
- Путать input() и raw_input() (устарело).
Как ввести несколько значений за один раз?
Метод строки split() позволяет разделить ввод на части. Пример:
a, b = input("Введите два числа через пробел: ").split()
print("Сумма:", int(a) + int(b))Python file io (ввод-вывод файлов в python)
Проблема: если пользователь введет неверное количество или нечисловые значения, возникнет ошибка. Решение - использовать try-except.
Ошибки: ValueError при недостаточном количестве значений или неверном типе. Рекомендуется проверять.
Как прочитать многострочный ввод до окончания?
Модуль sys предоставляет доступ к потоку stdin. Чтение всех строк до EOF:
import sys
data = sys.stdin.read()
print("Введено:", repr(data))Python temp files (временные файлы в python)
Этот способ полезен при перенаправлении ввода из файла или пайпов.
Ошибка забыть импортировать sys. Также read() читает все, включая символы новой строки.
Как выводить данные в файл вместо экрана?
Параметр file функции print указывает поток вывода:
with open("output.txt", "w") as f:
print("Строка для файла", file=f)Python index files (индексация файлов в python)
Аналогично можно перенаправить sys.stdout.
Как ввести данные с проверкой типа?
Использование try-except для безопасного преобразования:
while True:
try:
n = int(input("Введите целое число: "))
break
except ValueError:
print("Ошибка: введите целое число")File python class (класс для работы с файлами в python)
Цель: избежать аварийного завершения программы.
Как использовать ввод из командной строки (аргументы)?
Модуль argparse или sys.argv. Пример с sys.argv:
import sys
if len(sys.argv) > 1:
print("Привет,", sys.argv[1])
else:
print("Аргументы не указаны")Запуск: python script.py Вася
Расширенные примеры и сценарии использования
Пример 1: Ввод чисел с плавающей точкой и обработка ошибок.
def get_float(prompt):
while True:
try:
return float(input(prompt))
except ValueError:
print("Ошибка: введите число с точкой")
x = get_float("Введите первое число: ")
y = get_float("Введите второе число: ")
print(f"Результат: {x + y}")Введите первое число: 3.5 Введите второе число: 2.1 Результат: 5.6
Пример 2: Чтение чисел из файла и вывод суммы.
with open("numbers.txt", "r") as f:
total = 0
for line in f:
total += int(line.strip())
print("Сумма чисел:", total)Содержимое numbers.txt: 10 20 30 Вывод: Сумма чисел: 60
Пример 3: Считывание аргументов командной строки через argparse (с именованными параметрами).
import argparse
parser = argparse.ArgumentParser(description="Программа приветствия")
parser.add_argument("name", help="имя пользователя")
parser.add_argument("--greeting", default="Здравствуйте", help="приветствие")
args = parser.parse_args()
print(f"{args.greeting}, {args.name}!")Запуск: python greet.py --greeting Привет Иван Вывод: Привет, Иван!
Пример 4: Использование input() для интерактивного меню.
options = {"1": "Показать справку", "2": "Выход"}
while True:
print("Меню:")
for key, val in options.items():
print(f"{key}. {val}")
choice = input("Выберите опцию: ")
if choice == "1":
print("Это справка.")
elif choice == "2":
break
else:
print("Неверный выбор")Меню: 1. Показать справку 2. Выход Выберите опцию: 1 Это справка. Меню: 1. Показать справку 2. Выход Выберите опцию: 2
Пример 5: Перенаправление stdin из файла при запуске скрипта.
# script.py
for line in sys.stdin:
print("Прочитано:", line.strip())Команда: python script.py < input.txt Результат: Прочитано: строка1 Прочитано: строка2
Пример 6: Вывод с форматированием f-строк, параметры sep и end.
print("a", "b", "c", sep="-", end="!\n")a-b-c!
Пример 7: Пакетный ввод через split с несколькими разделителями.
import re
values = re.split(r"[,\s]+", input("Введите числа через запятую или пробел: "))
numbers = [int(v) for v in values]
print("Список чисел:", numbers)Введите числа через запятую или пробел: 10, 20 30 Список чисел: [10, 20, 30]