28 lines
858 B
Python
28 lines
858 B
Python
# table.py
|
|
"""
|
|
Модуль для вывода таблиц в консоль с выравниванием.
|
|
"""
|
|
|
|
def print_table(headers, rows):
|
|
"""
|
|
Печатает таблицу с выравниванием.
|
|
headers: список заголовков (строки)
|
|
rows: список строк, каждая строка — список значений (строки)
|
|
"""
|
|
widths = [len(str(h)) for h in headers]
|
|
for row in rows:
|
|
for i, cell in enumerate(row):
|
|
widths[i] = max(widths[i], len(str(cell)))
|
|
|
|
sep = "+" + "+".join("-" * (w + 2) for w in widths) + "+"
|
|
|
|
def print_row(cells):
|
|
print("| " + " | ".join(str(c).ljust(widths[i]) for i, c in enumerate(cells)) + " |")
|
|
|
|
print(sep)
|
|
print_row(headers)
|
|
print(sep)
|
|
for row in rows:
|
|
print_row(row)
|
|
print(sep)
|