Python: уроки, справочник и задачи

Python ввод вывод

Раздел: Основы Python · Обновлено 31.10.2026

Любая программа общается с пользователем через ввод и вывод. Здесь вы разберетесь, как print() выводит несколько значений, зачем нужны параметры sep и end, как получить данные через input() и подключить модуль стандартной библиотеки.

Примеры рассчитаны на Python 3.12 и 3.13. В новом разделе показано, как сделать ввод устойчивым к ошибкам: программа не падает, если вместо числа ввели букву, а таблица с результатами выглядит ровно благодаря спецификаторам формата в f-строках. В конце есть прием быстрого чтения данных для олимпиадных задач.

Python ввод вывод
Содержание статьи
  1. Форматированный вывод
  2. Ввод Python
  3. Импорт библиотек в Python
  4. Надежный ввод чисел и аккуратный вывод
    1. input() всегда возвращает строку
    2. Несколько чисел в одной строке
    3. Выравнивание и точность в f-строках
    4. Вывод в файл и в поток ошибок
  5. Частые вопросы
    1. Как вывести значения без пробела или без перехода на новую строку?
    2. Почему input() возвращает строку, даже если ввели число?
    3. Как ввести список чисел в одну строку?
    4. Как вывести число с двумя знаками после запятой?

Ввод и вывод в Python - это неотъемлемая часть в изучении языка. С выводом мы с вами уже знакомы, за это у нас отвечает print(),а за ввод у нас отвечает input(). Ниже, на примерах мы с вами разберем, как работают эи функции, и как лучше их использовать.

print('Это строка которую мы хотим вывести')
Результат:
Это строка которую мы хотим вывести # Результат вывода в консоли (print выводит строку без кавычек)

# рассмотрим другой пример
a = 10
print ("Значение переменной а", a)
Результат:
Значение переменной а 10 # Вывод в консоли

Во втором примере, возможно вы заметили что функция print(), добавила автоматически пробел между строкой, и значением переменной a. Такое поведение данной функции является своего рода настройкой по умолчанию, но, Python нас в этом не ограничивает, и мы можем изменить формат вывода.

print(*objects, sep=' ', end='\n', file=None, flush=False) # примерно так выглядит синтаксис функции
#objects - это значения, которые необходимо напечатать
#sep - это разделитель которые используется между значениями, по умолчанию, это пробел
#end - печать в самом конце

print(1,2,3,4)
print(1,2,3,4, sep='*')
print(1,2,3,4, sep ='#', end = '&')
Результат:
1 2 3 4
1*2*3*4
1#2#3#4&

Форматированный вывод

Существуют несколько вариантов форматированного вывода, но, мы с вами поговорим о более современном формате,f - строки. Данный вариант вывода форматированной записи удобен для восприятия, и в отличии от других вариантов, его использовать намного проще, рассмотрим примеры:

name = "Тимур"
age = 30

print(f"Привет {name}, тебе {age} лет? ")
Результат:
Привет Тимур, тебе 30 лет? # Как видите мы создали две переменные, и без труда их вывели в печать

Как вы помните из предыдущих уроков, переменная может менять свое значение в ходе работы вашей программы, соответственно, вы можете динамически генерировать различные значения на выводе. Логика работы f-строк, довольно проста, вы просто на выводе в нужном месте указываете в фигурных скобках название вашей переменной.

Ввод Python

И так, все что мы писали до сих пор, это максимально статичный код, в том что мы делали не было никакой гибкости, пришло время это изменить. Как вы уже много раз сталкивались, в большинстве программ для придания ему гибкости, идет частое взаимодействие с пользователем, а некоторые программы без взаимодействия с пользователем вообще бесполезны.

О вводе пользовательских данных мы поговорим еще много, и глубже изучим эту функцию. И так за ввод данных у нас отвечает функция input(). В примере ниже мы напишем небольшую программу, в которой пользователю надо будет ввести два слагаемых, и получить результат, поехали!

num = int(input('Введите значение:')) # вводим первое значение
num2 = int(input("Введите значение :")) #вводим второе значение
sum = num + num2 #создаем переменную sum, и записываем туда результат сложения
print("Результат:",sum) # выводим результат

Всего 4 строчки кода, и у нас уже есть маленькая программа, которая умеет складывать два числа, можно было конечно уместить эту программу и меньшее количество строк, но, для наглядности лучше так. Подведем небольшой промежуточный итог. В программе выше, мы использовали и ввод и вывод, и как видите это внесло ощутимую гибкость в нашей программе.

Импорт библиотек в Python

Со временем при разработке программы, она становится больше и функциональнее, хорошей идеей, и хорошим тоном разработки считается разбивки на модули. Модуль - это файл Python, в котором содержаться классы, функции, переменные, при импортировании модуля, нужные функции или переменные можно вызывать, то есть один модуль мы импортируем в другой модуль. Для импорта в Python есть ключевое слово import.Сейчас мы импортируем стандартный модуль Python math, и на небольшом примере разберемся как работать с импортированными модулями, и как вообще происходит процесс импорта.

import math # Просто, ничего сложного

print(math.pi) #Смотрите документацию по модулям, что бы знать как они работают, в данном случаем получаем число ПИ
Результат:
3.141592653589793

В примере выше, когда мы импортировали наш модуль math, нас стали доступны все его атрибуты и функции, но нужно запомнить, что мы можем так же импортировать из модуля только то, что нам нужно. Для этого используется ключевое слово from. Например:

from math import pi # Все очень просто, из модуля math импортируем константу pi (число ПИ)

Возможность импортирования модулей, делает Python очень гибкой средой разработки, огромное количество написанных и протестированных модулей решают кучу задач за нас, вам достаточно поискать нужный модуль и почитать его документацию, начните с pypi.org

Следующий урок: Условия в Python

Надежный ввод чисел и аккуратный вывод

Здесь разобраны такие пункты: input() всегда возвращает строку, несколько чисел в одной строке, выравнивание и точность в f-строках, вывод в файл и в поток ошибок.

input() всегда возвращает строку

Даже если пользователь набрал 5, функция вернет строку "5". Без преобразования "5" + "3" даст "53", а int("пять") завершит программу с ValueError. Оберните ввод в функцию с повтором:

def ask_int(prompt: str, low: int | None = None, high: int | None = None) -> int:
    while True:
        raw = input(prompt).strip()
        try:
            value = int(raw)
        except ValueError:
            print(f"Нужно целое число, а не {raw!r}")
            continue
        if (low is not None and value < low) or (high is not None and value > high):
            print(f"Число должно быть от {low} до {high}")
            continue
        return value

age = ask_int("Возраст: ", 0, 120)

Для дробных чисел используйте float() и помните, что Python ожидает точку: float("2,5") вызовет ошибку. Если пользователи вводят запятую, замените ее заранее через raw.replace(",", ".").

Обратите внимание на устройство функции. Вызов strip() убирает случайные пробелы по краям, которые иначе приведут к ошибке преобразования. Запись {raw!r} выводит введенное значение в кавычках, поэтому пустая строка или лишний пробел сразу заметны. Цикл while True повторяет вопрос, пока не получит корректное значение, а return завершает и цикл, и функцию. Такую функцию достаточно написать один раз и использовать во всех учебных программах, где нужно спросить число.

Несколько чисел в одной строке

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

a, b = map(int, input("Два числа через пробел: ").split())
nums = [int(x) for x in input().split()]

Выравнивание и точность в f-строках

rows = [("Хлеб", 2, 54.9), ("Сыр", 1, 389.0)]
for name, qty, price in rows:
    print(f"{name:<8}{qty:>3} шт. {price:>8.2f} руб.")
# Хлеб      2 шт.    54.90 руб.
# Сыр       1 шт.   389.00 руб.
СпецификаторЗначениеПример результата
{x:.2f}2 знака после точки3.14
{x:>8}выравнивание вправо по ширине 8 text
{x:,}разделитель тысяч1,000,000
{x:.1%}процент12.5%
{x=}имя и значение для отладкиx=42

Вывод в файл и в поток ошибок

У print() есть параметры file и flush. Сообщения об ошибках выводите в sys.stderr, чтобы они не смешивались с результатом, а flush=True нужен для индикаторов прогресса, которые должны появляться сразу.

import sys

print("Файл не найден", file=sys.stderr)
with open("log.txt", "a", encoding="utf-8") as f:
    print("Запуск завершен", file=f)

Для больших объемов входных данных input() медленный. Читайте все сразу: data = sys.stdin.read().split(). Больше примеров ввода есть в статье input python 3.

Частые вопросы

Несколько вопросов, которые часто задают начинающие, и ответы на них.

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

Задайте параметры: print(a, b, sep="") склеит значения без пробела, а print(x, end=" ") заменит перенос строки пробелом. Оба параметра можно комбинировать.

Почему input() возвращает строку, даже если ввели число?

Функция не знает, какие данные вы ожидаете, и всегда отдает текст. Преобразование выполняете вы: int(), float() или собственная функция с проверкой.

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

Разбейте строку методом split() и преобразуйте каждый элемент: nums = list(map(int, input().split())). По умолчанию split() делит по любым пробелам и игнорирует лишние.

Как вывести число с двумя знаками после запятой?

Используйте f-строку f"{x:.2f}". Она возвращает строку для вывода, а для вычислений с округлением применяйте round(x, 2) или модуль decimal, если важна точность денежных сумм.