Formatação de strings em Python: f-strings, format() e operador %
Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução
Imagine que você está montando o recibo de uma cafeteria. Você precisa juntar o nome de um produto, um preço e uma quantidade em uma única linha bem organizada. Você poderia colar as strings com +, mas isso vira bagunça rapidinho.
Formatar strings é como preencher um modelo com lacunas. Você escreve a estrutura da frase uma vez e depois encaixa os valores onde eles devem ficar. É mais limpo, mais rápido e muito mais fácil de ler.
O Python oferece três formas de formatar strings: as f-strings, o método .format() e o operador %. Neste tutorial, você vai aprender as três e descobrir quando usar cada uma.
Por que formatar strings é melhor do que concatenar
Quando os iniciantes começam a combinar variáveis com texto, eles recorrem ao operador +. Funciona, mas obriga você a converter números em strings manualmente e a espalhar sinais de + por toda parte.
name = "Latte"
price = 4.5
qty = 2
print("Item: " + name + " | Price: $" + str(price) + " | Qty: " + str(qty))name = "Latte"
price = 4.5
qty = 2
print(f"Item: {name} | Price: ${price} | Qty: {qty}")As duas linhas produzem a mesma saída. Mas a versão com f-string é mais curta, mais fácil de ler e você nunca precisa chamar str() por conta própria. O Python cuida da conversão automaticamente.
Como usar f-strings em Python
Uma f-string (literal de string formatada) começa com a letra f antes das aspas de abertura. Dentro da string, você coloca variáveis ou expressões entre chaves {}.
O Python avalia o que estiver dentro das chaves e insere o resultado na string. As f-strings surgiram no Python 3.6 e hoje são a forma recomendada de formatar strings.
My name is Alice. I am 30 years old. I live in Seattle.
O f antes das aspas é o que torna isso especial. Sem ele, o Python exibiria o texto literal {name} em vez do valor da variável.
Hello, {name}!
Hello, Alice!Que expressões você pode colocar dentro de f-strings?
As f-strings não se limitam a variáveis. Você pode colocar qualquer expressão Python válida dentro das chaves: contas, chamadas de função, chamadas de método e até condicionais.
Area: 50 square units Length: 6 Uppercase: PYTHON Result: Pass
Pense em cada {} como uma pequena calculadora. O Python avalia a expressão, converte o resultado em string e o encaixa no lugar.
Como formatar números em f-strings no Python
É aqui que as f-strings realmente brilham. Depois do nome da variável, você coloca dois-pontos : seguidos de um especificador de formato, que controla a aparência do número.
Casas decimais com .Nf
Use :.Nf para mostrar exatamente N casas decimais. O f significa notação de "ponto fixo" (fixed-point). Isso é essencial para exibir preços, medidas e notas.
Price: $4.50 Pi: 3.1416 Rounded: 3.1
Separadores de milhar para números grandes
Use :, para separar os milhares de números grandes com vírgulas (o padrão americano). Isso deixa números como 1000000 muito mais fáceis de ler de relance.
Population: 8,900,000 Salary: $75,000.50
Porcentagens com %
Use :.N% para exibir um número decimal como porcentagem. O Python multiplica o valor por 100 e adiciona o sinal % automaticamente.
Progress: 75.6% Tax rate: 8.25%
Preenchimento e alinhamento
Você pode definir uma largura mínima para um valor e controlar se ele fica alinhado à esquerda, à direita ou ao centro. Isso é perfeito para montar saídas limpas e alinhadas, como tabelas.
|Left | | Center | | Right| | 42| |0000000042|
Como usar o método .format()
Antes de as f-strings existirem, quem programava em Python usava o método .format(). Ele funciona assim: você coloca marcadores {} vazios na string e depois chama .format() com os valores que vão preenchê-los.
Hello, Bob! You are 25 years old. Hello, Bob! You are 25 years old. Nice to meet you, Bob! Hello, Bob! You are 25 years old.
O método .format() aceita os mesmos especificadores de formato das f-strings. Tudo o que vem depois dos dois-pontos funciona da mesma forma.
Price: $19.99 Big number: 1,000,000
As posições numeradas são úteis quando você precisa repetir um valor várias vezes na mesma string. Você pode usar o mesmo índice quantas vezes quiser.
O operador % para formatar strings (estilo antigo)
O operador % é a forma mais antiga de formatar strings em Python. Ele vem da função printf da linguagem C. Você vai encontrá-lo em códigos mais antigos e deve saber reconhecê-lo, mas não precisa usá-lo em código novo.
Hello, Charlie! You are 35 years old. Price: $9.99
O %s significa "insira uma string aqui", %d significa "insira um inteiro" e %f significa "insira um float". Os valores vêm depois do operador %, no final.
f-strings, format() ou operador %: qual usar?
As três abordagens produzem o mesmo resultado. A diferença está na legibilidade e na praticidade. Veja a mesma saída escrita de três jeitos:
Coffee: $4.50 Coffee: $4.50 Coffee: $4.50
f-strings de várias linhas e padrões do dia a dia
Para strings formatadas mais longas, você pode usar aspas triplas com o prefixo f. Isso é útil para mensagens de várias linhas, relatórios e modelos de e-mail.
Hi Alice, Your order #4821 has been confirmed. Total: $37.50 Thank you for shopping with us!
Aqui vai um exemplo prático: montar uma tabela formatada. Os especificadores de alinhamento deixam cada coluna bem alinhada.
Product Price Qty Total ------------------------------------- Laptop 999.99 1 999.99 Mouse 29.50 3 88.50 Keyboard 74.00 2 148.00
x=42 y=17 x + y=59
Exercícios práticos
Crie a variável item com o valor "Cappuccino" e a variável price com o valor 4.5. Depois, use uma f-string para exibir uma linha de recibo exatamente neste formato:
Cappuccino .......... $4.50O preço deve aparecer com exatamente 2 casas decimais. Use a string " .......... $" entre o nome e o preço.
Crie a variável population com o valor 7900000000. Exiba-a usando uma f-string com separadores de milhar, para que a saída seja:
World population: 7,900,000,000Crie três variáveis: name = "Alice", score = 95.8 e grade = "A+". Exiba uma linha de tabela formatada em que:
Saída esperada (os caracteres | fazem parte da saída):
| Alice | 95.8 | A+ |O código abaixo deveria exibir "Hello, Sam! You scored 92.5%.", mas exibe as chaves em vez dos valores. Encontre e corrija o bug.
Crie estas variáveis:
first_name = "Jordan"items = 3total = 89.95Depois, use uma f-string de várias linhas (aspas triplas) para exibir exatamente esta mensagem:
Hi Jordan,
Thank you for your purchase of 3 items.
Your total is $89.95.
Have a great day!Garanta que o total apareça com exatamente 2 casas decimais.