Создание отступов в выводе Python: полное руководство

Раздел: Ввод-вывод -> Функция print

Основные способы создания отступов в выводе

Наиболее эффективным решением для управления отступами является применение f-строк с указанием ширины поля и выравнивания. Преимущества: читаемость, гибкость, возможность задавать динамическую ширину и формат чисел. Конструкция f"{value:10}" выравнивает значение по правому краю в поле шириной 10 символов. Для левого выравнивания используется <, для центрирования - ^. Например, f"{name:10} {age:5}".


names = ['Анна', 'Борис', 'Виктор']
ages = [28, 35, 42]
for n, a in zip(names, ages):
    print(f"{n:<10} {a:>5}")
  

Python print version (вывод версии python)

Анна            28
Борис           35
Виктор          42
  

Print set python (вывод множества в python)

Цель - создание таблиц с выровненными столбцами. Случай использования - вывод структурированных данных в консоль или лог.

Как вставить табуляцию между элементами?

Символ \t добавляет один табуляционный отступ. Способ прост, но ширина табуляции зависит от терминала (обычно 8 пробелов).


print('Имя\tВозраст\tГород')
print('Анна\t28\tМосква')
  

Python print error (вывод ошибок в python)

Имя     Возраст Город
Анна    28      Москва
  

Print python перевод (перевод строки в print python)

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

Как задать отступ определённой длины в пробелах?

Умножение строки ' ' на число создаёт нужное количество пробелов. Подходит для простых случаев, когда ширина отступа фиксирована.


indent = 4
print(' '*indent + 'Сообщение с отступом')
  

Python print отступ (вывод с отступами в python)

    Сообщение с отступом
  

Print random python (вывод случайного числа в python)

Проблемы: отступ не учитывает длину содержимого, требуется ручной пересчёт при изменении данных.

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

Методы str.ljust(width), str.rjust(width), str.center(width) дополняют строку пробелами до указанной длины.


words = ['яблоко', 'груша', 'апельсин']
for w in words:
    print(w.ljust(15), '|', w.rjust(15))
  

Python print текст и переменная (вывод текста и переменной в python)

яблоко           |          яблоко
груша            |           груша
апельсин         |        апельсин
  

Python how print (как выводить в python)

Проблемы: код становится менее лаконичным при форматировании нескольких колонок; методы не поддерживают форматирование чисел.

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

Метод format() с синтаксисом '{:>10}'.format(value) работает аналогично f-строкам, но менее читаем.


print('{:>10} {:5}'.format('Цена', 100))
print('{:>10} {:5}'.format('Количество', 2))
  

Python print несколько строк (многострочный вывод в python)

      Цена   100
 Количество     2
  

Print python синтаксис (синтаксис вывода в python)

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

Как вставить разделитель между аргументами print?

Параметр sep функции print позволяет задать строку-разделитель между значениями. Например, print(a, b, sep=' | ').


print('Имя', 'Возраст', 'Город', sep='\t')
print('Анна', 28, 'Москва', sep='\t')
  

Python echo print (аналог echo в python (print))

Имя     Возраст Город
Анна    28      Москва
  

Python console print (вывод в консоль в python)

Проблемы: нельзя задать разную ширину для разных аргументов; разделитель применяется ко всем парам одинаково.

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

Параметр end управляет завершающим символом. Комбинация end='\n' с последующим print(' '*n, end='') позволяет вывести отступ перед следующим выводом.


print('Пункт 1:', end=' ')
print('описание')
print('  Подпункт')
  

Python вывод в 1 строку (вывод в одну строку в python)

Пункт 1: описание
  Подпункт
  
Проблемы: логика отступов смешивается с логикой перехода строки; сложно управлять отступами в многострочных блоках.
- Module print python (модуль print в python (функция))
- вывод без пробелов python (вывод без пробелов в python)
- оператор end в python (параметр end в функции print python)

Расширенные примеры форматирования отступов

Пример 1. Таблица с переменной шириной столбцов. Ширина вычисляется по максимальной длине данных.

Пример

data = [('Имя', 'Возраст', 'Город'),
        ('Александр', 27, 'Санкт-Петербург'),
        ('Елена', 34, 'Новосибирск')]
col_width = [max(len(str(row[i])) for row in data) for i in range(len(data[0]))]
for row in data:
    line = ''
    for i, val in enumerate(row):
        line += f"{str(val):<{col_width[i]+2}}"
    print(line)
Имя         Возраст  Город            
Александр   27       Санкт-Петербург  
Елена       34       Новосибирск      

Пояснение: сначала находится ширина каждого столбца, затем f-строка с динамической шириной формирует строку. Отступ между столбцами - 2 пробела.

Пример 2. Выравнивание чисел с плавающей точкой.

Пример

prices = [19.99, 5.5, 123.456, 0.1]
for p in prices:
    print(f"{p:>8.2f}")
   19.99
    5.50
  123.46
    0.10

Пояснение: :>8.2f - ширина 8, два знака после запятой, выравнивание вправо. Числа округляются, а десятичная точка фиксируется.

Пример 3. Центрирование с заполнителем.

Пример

header = 'СПИСОК СОТРУДНИКОВ'
print(f"{header:=^50}")
=================СПИСОК СОТРУДНИКОВ==================

Пояснение: символ = используется как заполнитель, ^ центрирует строку в поле шириной 50.

Пример 4. Многоуровневый отступ при рекурсивном обходе.

Пример

def show_dict(d, indent=0):
    for key, value in d.items():
        print('  '*indent + str(key) + ':', end=' ')
        if isinstance(value, dict):
            print()
            show_dict(value, indent+1)
        else:
            print(value)

data = {'a': 1, 'b': {'c': 2, 'd': {'e': 3}}}
show_dict(data)
a: 1
b: 
  c: 2
  d: 
    e: 3

Пояснение: отступ увеличивается на 2 пробела на каждый уровень вложенности. Универсальный способ для иерархического вывода.

Пример 5. Динамическая ширина из переменной.

Пример

w = 20
print(f"{'Левый':<{w}} {'Правый':>{w}}")
print(f"{'Текст1':<{w}} {'Text2':>{w}}")
Левый                               Правый
Текст1                              Text2

Пояснение: фигурные скобки внутри f-строки позволяют подставить значение w как ширину.

Пример 6. Вывод прогресс-бара с отступами.

Пример

import time
for i in range(1, 11):
    bar = '#' * i + '.' * (10 - i)
    print(f"\rПрогресс: [{bar:10}] {i*10:>3}%", end='')
    time.sleep(0.2)
print()
Прогресс: [##########] 100%

Пояснение: \r возвращает каретку, bar:10 выравнивает строку прогресса до 10 символов, i*10:>3 выводит проценты с выравниванием вправо.

Пример 7. Использование sep с разными отступами.

Пример

row = ['ID', 'Product', 'Price']
print(' | '.join(f"{cell:12}" for cell in row))
ID          | Product      | Price       

Пояснение: комбинация join и f-строк формирует строку с выравненными колонками, разделёнными |.

Пример 8. Отступы для кода с номерами строк.

Пример

lines = ['def hello():', '    print("Hello")', '    return 0']
for i, line in enumerate(lines, 1):
    print(f"{i:>4}: {line}")
   1: def hello():
   2:     print("Hello")
   3:     return 0

Пояснение: номер строки выравнивается по правому краю на 4 символа, затем пробел и сам код.

Вывод с отступами в Python - comments

En
Python print отступ (python)