Agora que você aprendeu diferentes técnicas de alinhamento, vamos aplicá-las para criar tabelas bem formatadas. Tabelas são uma forma comum de exibir dados estruturados em um formato legível, e o alinhamento adequado é crucial para apresentar informações tabulares de forma eficaz.
Tabela Simples com Colunas de Largura Fixa
Vamos começar criando uma tabela simples usando colunas de largura fixa.
- Crie um novo arquivo chamado
simple_table.py no diretório /home/labex/project:
## simple_table.py
print("Tabela Simples de Largura Fixa")
print("-" * 50)
## Defina alguns dados
header = ["Nome", "Idade", "Cidade", "Profissão"]
data = [
["John Smith", 34, "Nova Iorque", "Médico"],
["Sarah Johnson", 28, "São Francisco", "Engenheira"],
["Michael Brown", 42, "Chicago", "Professor"],
["Emily Davis", 31, "Boston", "Cientista"]
]
## Imprima o cabeçalho
print(f"{header[0]:<20} {header[1]:<8} {header[2]:<15} {header[3]:<15}")
print("-" * 60)
## Imprima as linhas
for row in data:
print(f"{row[0]:<20} {row[1]:<8} {row[2]:<15} {row[3]:<15}")
- Salve o arquivo e execute-o:
python3 ~/project/simple_table.py
- Você deve ver uma tabela formatada, como esta:
Tabela Simples de Largura Fixa
--------------------------------------------------
Nome Idade Cidade Profissão
------------------------------------------------------------
John Smith 34 Nova Iorque Médico
Sarah Johnson 28 São Francisco Engenheira
Michael Brown 42 Chicago Professor
Emily Davis 31 Boston Cientista
Tabela Dinâmica com Tipos Múltiplos de Alinhamento
Diferentes tipos de dados geralmente ficam melhores com estilos de alinhamento diferentes. Por exemplo, texto geralmente é alinhado à esquerda, enquanto números são alinhados à direita. Vamos criar uma tabela mais sofisticada com alinhamento misto.
- Crie um novo arquivo chamado
dynamic_table.py no diretório /home/labex/project:
## dynamic_table.py
print("Tabela Dinâmica com Alinhamento Misto")
print("-" * 50)
## Defina alguns dados
header = ["Produto", "Preço", "Quantidade", "Total"]
products = [
["Laptop", 1299.99, 3, 3899.97],
["Mouse", 24.50, 10, 245.00],
["Monitor", 349.95, 2, 699.90],
["Teclado", 49.99, 5, 249.95],
["Fones de ouvido", 89.95, 4, 359.80]
]
## Calcule as larguras das colunas com base no conteúdo
col_widths = [
max(len(str(header[0])), max(len(str(row[0])) for row in products)) + 2,
max(len(str(header[1])), max(len(f"${row[1]:.2f}") for row in products)) + 2,
max(len(str(header[2])), max(len(str(row[2])) for row in products)) + 2,
max(len(str(header[3])), max(len(f"${row[3]:.2f}") for row in products)) + 2
]
## Imprima o cabeçalho
print(f"{header[0]:<{col_widths[0]}}"
f"{header[1]:>{col_widths[1]}}"
f"{header[2]:>{col_widths[2]}}"
f"{header[3]:>{col_widths[3]}}")
print("-" * sum(col_widths))
## Imprima as linhas com alinhamento apropriado
for product in products:
print(f"{product[0]:<{col_widths[0]}}",
f"${product[1]:.2f}".rjust(col_widths[1]),
f"{product[2]}".rjust(col_widths[2]),
f"${product[3]:.2f}".rjust(col_widths[3]))
## Imprima o resumo
total_quantity = sum(product[2] for product in products)
total_cost = sum(product[3] for product in products)
print("-" * sum(col_widths))
print(f"{'TOTAL':<{col_widths[0]}}",
f"".rjust(col_widths[1]),
f"{total_quantity}".rjust(col_widths[2]),
f"${total_cost:.2f}".rjust(col_widths[3]))
... (rest of the translated content)