Como alinhar a saída em impressão Python

PythonBeginner
Pratique Agora

Introdução

Ao escrever programas em Python, apresentar a saída de forma limpa e organizada é essencial tanto para a legibilidade do código quanto para a experiência do usuário. Seja criando relatórios, exibindo dados tabulares ou simplesmente imprimindo informações no console, o alinhamento adequado do texto torna sua saída mais profissional e fácil de ler.

Neste laboratório, você aprenderá várias técnicas para alinhar e formatar a saída de texto em Python. Você explorará diferentes métodos de alinhamento, praticará técnicas de formatação e criará exibições tabulares bem estruturadas que podem ser aplicadas em aplicações do mundo real.

Alinhamento Básico de Strings em Python

Neste primeiro passo, você aprenderá sobre os conceitos fundamentais de alinhamento de texto em Python e implementará técnicas básicas de alinhamento.

O que é Alinhamento de Texto?

Alinhamento de texto refere-se a como o texto é posicionado dentro de um determinado espaço. Python fornece vários métodos para controlar o posicionamento do texto ao imprimir no console. Os três principais tipos de alinhamento são:

  • Alinhamento à esquerda (Left alignment): O texto começa na borda esquerda do espaço alocado.
  • Alinhamento à direita (Right alignment): O texto termina na borda direita do espaço alocado.
  • Alinhamento centralizado (Center alignment): O texto é centralizado dentro do espaço alocado.

Seu Primeiro Programa de Alinhamento

Vamos criar um script Python simples para demonstrar as técnicas básicas de alinhamento.

  1. Abra o WebIDE no seu ambiente LabEx.

  2. Crie um novo arquivo chamado basic_alignment.py no diretório /home/labex/project clicando no ícone "New File" no WebIDE.

  3. Adicione o seguinte código ao arquivo:

## basic_alignment.py
print("Basic String Alignment Examples")
print("-" * 30)

## Left alignment example
print("Left alignment:")
print("Python".ljust(20) + "|")
print("Programming".ljust(20) + "|")
print("Alignment".ljust(20) + "|")
print()

## Right alignment example
print("Right alignment:")
print("Python".rjust(20) + "|")
print("Programming".rjust(20) + "|")
print("Alignment".rjust(20) + "|")
print()

## Center alignment example
print("Center alignment:")
print("Python".center(20) + "|")
print("Programming".center(20) + "|")
print("Alignment".center(20) + "|")
  1. Salve o arquivo pressionando Ctrl+S ou selecionando "File" > "Save" no menu.

  2. Abra um terminal no WebIDE (se ainda não estiver aberto) clicando no menu "Terminal" e selecionando "New Terminal".

  3. Execute o script usando o interpretador Python:

cd ~/project
python3 basic_alignment.py
  1. Você deve ver a seguinte saída:
Basic String Alignment Examples
------------------------------
Left alignment:
Python              |
Programming         |
Alignment           |

Right alignment:
              Python|
         Programming|
           Alignment|

Center alignment:
       Python       |
     Programming    |
      Alignment     |

Entendendo o Código

O script que você acabou de criar demonstra três métodos básicos de alinhamento de strings em Python:

  • ljust(width): Justifica a string à esquerda dentro de um campo da largura especificada.
  • rjust(width): Justifica a string à direita dentro de um campo da largura especificada.
  • center(width): Centraliza a string dentro de um campo da largura especificada.

Em cada exemplo, adicionamos uma barra vertical (|) no final de cada linha para mostrar claramente o limite do espaço alocado. Observe como o texto se alinha de forma diferente em cada caso, mantendo a mesma largura total de 20 caracteres.

Alinhamento de Strings com Caracteres Diferentes

Os métodos de justificação de strings também podem receber um segundo parâmetro para especificar o caractere de preenchimento que será usado para o padding. Vamos modificar nosso script para ver isso em ação.

  1. Crie um novo arquivo chamado alignment_with_chars.py no diretório /home/labex/project.

  2. Adicione o seguinte código ao arquivo:

## alignment_with_chars.py
print("String Alignment With Custom Characters")
print("-" * 40)

## Using different padding characters
print("Left alignment with dots:")
print("Python".ljust(20, '.') + "|")
print("Programming".ljust(20, '.') + "|")
print()

print("Right alignment with asterisks:")
print("Python".rjust(20, '*') + "|")
print("Programming".rjust(20, '*') + "|")
print()

print("Center alignment with hyphens:")
print("Python".center(20, '-') + "|")
print("Programming".center(20, '-') + "|")
  1. Salve o arquivo e execute-o:
python3 ~/project/alignment_with_chars.py
  1. Você deve ver uma saída como esta:
String Alignment With Custom Characters
----------------------------------------
Left alignment with dots:
Python..............|
Programming.........|

Right alignment with asterisks:
**************Python|
*********Programming|

Center alignment with hyphens:
-------Python------|
----Programming----|

Esses exemplos demonstram como você pode personalizar a aparência do seu texto alinhado usando diferentes caracteres de preenchimento.

Métodos Avançados de Formatação para Alinhamento

No passo anterior, você aprendeu sobre o alinhamento básico de strings usando os métodos ljust(), rjust() e center(). Agora, vamos explorar métodos de formatação mais poderosos e flexíveis disponíveis em Python.

Métodos de Formatação de Strings em Python

Python oferece várias maneiras de formatar strings:

  1. Formatação de estilo antigo (usando o operador %)
  2. O método str.format()
  3. F-strings (literais de string formatados, disponíveis no Python 3.6+)

Cada método fornece maneiras de alinhar texto e formatar vários tipos de dados. Vamos explorá-los um por um.

1. Formatação de Estilo Antigo (% Operador)

Este é o método mais antigo de formatação de strings em Python, semelhante à função printf() do C.

  1. Crie um novo arquivo chamado old_style_formatting.py no diretório /home/labex/project:
## old_style_formatting.py
print("Formatação de String de Estilo Antigo")
print("-" * 30)

## Alinhamento à esquerda com formatação %
print("Alinhamento à esquerda:")
print("%-15s | %-10s" % ("Python", "Linguagem"))
print("%-15s | %-10s" % ("JavaScript", "Web"))
print()

## Alinhamento à direita com formatação %
print("Alinhamento à direita:")
print("%15s | %10s" % ("Python", "Linguagem"))
print("%15s | %10s" % ("JavaScript", "Web"))
print()

## Formatação de números
preco = 125.5
taxa_imposto = 0.21
print("Preço: $%8.2f" % preco)
print("Taxa de imposto: %6.1f%%" % (taxa_imposto * 100))
print("Valor do imposto: $%6.2f" % (preco * taxa_imposto))
print("Total: $%8.2f" % (preco * (1 + taxa_imposto)))
  1. Salve o arquivo e execute-o:
python3 ~/project/old_style_formatting.py
  1. Você deve ver uma saída semelhante a esta:
Formatação de String de Estilo Antigo
------------------------------
Alinhamento à esquerda:
Python          | Linguagem
JavaScript      | Web

Alinhamento à direita:
         Python |  Linguagem
     JavaScript |       Web

Formatação de números:
Preço: $   125.50
Taxa de imposto:   21.0%
Valor do imposto: $ 26.36
Total: $   151.86

2. O Método str.format()

O método str.format() fornece uma maneira mais versátil de formatar strings e foi introduzido para resolver algumas limitações do operador %.

  1. Crie um novo arquivo chamado format_method.py no diretório /home/labex/project:
## format_method.py
print("Formatação de String com str.format()")
print("-" * 35)

## Alinhamento básico com format
print("Alinhamento básico:")
print("{:<15} | {:<10}".format("Python", "Linguagem"))
print("{:>15} | {:>10}".format("Python", "Linguagem"))
print("{:^15} | {:^10}".format("Python", "Linguagem"))
print()

## Alinhamento com caractere de preenchimento personalizado
print("Caractere de preenchimento personalizado:")
print("{:*<15} | {:.>10}".format("Python", "Linguagem"))
print("{:#^15} | {:=^10}".format("Python", "Linguagem"))
print()

## Alinhamento com nomes de campo
print("Usando nomes de campo:")
print("{name:<15} | {type:<10}".format(name="JavaScript", type="Web"))
print("{name:>15} | {type:>10}".format(name="Python", type="Linguagem"))
print()

## Formatação de números
preco = 125.5
taxa_imposto = 0.21
print("Formatação de números:")
print("Preço: ${:8.2f}".format(preco))
print("Taxa de imposto: {:6.1f}%".format(taxa_imposto * 100))
print("Valor do imposto: ${:6.2f}".format(preco * taxa_imposto))
print("Total: ${:8.2f}".format(preco * (1 + taxa_imposto)))
  1. Salve o arquivo e execute-o:
python3 ~/project/format_method.py
  1. Você deve ver uma saída semelhante a esta:
Formatação de String com str.format()
-----------------------------------
Alinhamento básico:
Python          | Linguagem
         Python |   Linguagem
    Python      |  Linguagem

Caractere de preenchimento personalizado:
Python********* | Linguagem...
#####Python##### | ==Linguagem==

Usando nomes de campo:
JavaScript      | Web
         Python |  Linguagem

Formatação de números:
Preço: $  125.50
Taxa de imposto:   21.0%
Valor do imposto: $ 26.36
Total: $  151.86

3. F-strings (Python 3.6+)

F-strings fornecem uma maneira concisa e conveniente de incorporar expressões dentro de literais de string. Eles são prefixados com a letra 'f' e usam chaves {} para incluir expressões.

  1. Crie um novo arquivo chamado f_strings.py no diretório /home/labex/project:
## f_strings.py
print("Formatação de String com F-strings")
print("-" * 35)

linguagem = "Python"
categoria = "Linguagem"
versao = 3.10
ano = 2022

## Alinhamento básico com f-strings
print("Alinhamento básico:")
print(f"{linguagem:<15} | {categoria:<10}")
print(f"{linguagem:>15} | {categoria:>10}")
print(f"{linguagem:^15} | {categoria:^10}")
print()

## Especificação de largura dinâmica
largura1 = 15
largura2 = 10
print("Largura dinâmica:")
print(f"{linguagem:<{largura1}} | {categoria:<{largura2}}")
print(f"{linguagem:>{largura1}} | {categoria:>{largura2}}")
print()

## Expressões dentro de f-strings
print("Expressões em f-strings:")
print(f"{linguagem + str(versao):<15} | {ano - 1991:>10} anos de idade")
print()

## Formatação de números
preco = 125.5
taxa_imposto = 0.21
print("Formatação de números:")
print(f"Preço: ${preco:8.2f}")
print(f"Taxa de imposto: {taxa_imposto * 100:6.1f}%")
print(f"Valor do imposto: ${preco * taxa_imposto:6.2f}")
print(f"Total: ${preco * (1 + taxa_imposto):8.2f}")
  1. Salve o arquivo e execute-o:
python3 ~/project/f_strings.py
  1. Você deve ver uma saída semelhante a esta:
Formatação de String com F-strings
-----------------------------------
Alinhamento básico:
Python          | Linguagem
         Python |  Linguagem
    Python      | Linguagem

Largura dinâmica:
Python          | Linguagem
         Python |  Linguagem

Expressões em f-strings:
Python 3.1      |         31 anos de idade

Formatação de números:
Preço: $  125.50
Taxa de imposto:   21.0%
Valor do imposto: $ 26.36
Total: $  151.86

Comparação dos Métodos de Formatação

Cada método de formatação tem suas vantagens. Veja quando usar cada um:

  • Operador %: Use em código legado ou quando a compatibilidade com versões mais antigas do Python for necessária.
  • str.format(): Mais poderoso que a formatação %, especialmente para requisitos de formatação complexos.
  • F-strings: A opção mais concisa e legível, recomendada para todo o novo código Python (Python 3.6+).

A tendência moderna em Python é usar f-strings sempre que possível devido à sua legibilidade e benefícios de desempenho.

Criando Tabelas Formatadas com Python

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.

  1. 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}")
  1. Salve o arquivo e execute-o:
python3 ~/project/simple_table.py
  1. 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.

  1. 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)

Resumo

Neste laboratório, você aprendeu várias técnicas para alinhar e formatar a saída de texto em Python:

  • Métodos básicos de alinhamento de strings: ljust(), rjust() e center()
  • Diferentes abordagens de formatação de strings: operador %, str.format() e f-strings
  • Como criar tabelas bem estruturadas com colunas de largura fixa
  • Como aplicar diferentes estilos de alinhamento com base nos tipos de dados
  • Como criar aplicações do mundo real, como relatórios financeiros, com formatação adequada

Essas habilidades de alinhamento de texto são essenciais para criar saídas legíveis e profissionais em muitas aplicações, desde utilitários simples de linha de comando até sistemas complexos de processamento de dados. Ao dominar o alinhamento de texto em Python, você pode melhorar significativamente a experiência do usuário e a legibilidade de seus programas.

À medida que você continua sua jornada em Python, lembre-se de que uma saída limpa e bem formatada é frequentemente tão importante quanto a lógica computacional de seus programas. As técnicas aprendidas neste laboratório ajudarão você a apresentar seus dados de uma forma que seja funcional e visualmente atraente.