f-strings: formatando texto com variáveis
Concatenar texto com + funciona, mas fica ilegível rápido e quebra fácil ao misturar tipos. Existe um jeito bem mais limpo, e é o que todo código Python moderno usa.
Estudar esta lição interativa →Na lição passada, um TypeError apareceu ao tentar concatenar um número direto com +. Mesmo corrigindo o tipo, montar frases juntando pedaços com + fica cansativo rápido, principalmente quando há vários valores misturados com texto fixo. Compare os dois jeitos de montar a mesma frase:
nome = "Marina"
idade = 29
print("Olá, " + nome + "! Você tem " + str(idade) + " anos.")
print(f"Olá, {nome}! Você tem {idade} anos.")As duas linhas produzem a mesma saída. Repare no esforço de cada uma.
A segunda linha é uma f-string (string formatada): o f logo antes da aspa de abertura avisa ao Python que, dentro daquele texto, tudo que estiver entre chaves { } deve ser substituído pelo valor daquela expressão. Não precisa converter número em texto na mão, não precisa espalhar sinais de + pela linha inteira: o valor simplesmente aparece encaixado no lugar certo.
Pense numa f-string como um formulário de carta-modelo com espaços em branco pré-marcados: "Prezado(a) {nome}, seu pedido de número {numero} foi confirmado." Você não reescreve a carta inteira para cada cliente, só preenche os espaços em branco com os valores certos. É exatamente esse preenchimento automático que {variavel} faz dentro de uma f-string.
Uma f-string também formata números direto dentro das chaves, usando dois-pontos seguidos de um formato. O mais comum é :.2f, que força exatamente duas casas decimais, essencial para mostrar valores em dinheiro sem casas decimais quebradas ou faltando:
preco = 8.9
quantidade = 3
print(f"Total: R$ {preco * quantidade:.2f}")O :.2f sempre usa o ponto como separador decimal (26.70), ao contrário do jeito brasileiro (R$ 26,70). Por isso, nos exercícios deste módulo, o texto esperado usa o ponto, e alguns exemplos escrevem o valor com vírgula direto no texto, como em "Frete: R$ 8,00". Quando for hora de mostrar dinheiro ao usuário final, no módulo de funções você vai criar a brl(), uma função que formata como R$ 1.234,50.
Python tem outros jeitos mais antigos de formatar texto (o operador % e o método .format()), mas desde a introdução das f-strings (Python 3.6, hoje bem estabelecida), elas viraram a forma recomendada: mais curta, mais legível, e mais rápida de escrever sem errar a ordem dos valores.
Se você escrever "Olá, {nome}!" sem o f antes da aspa, o Python não avisa nada: ele simplesmente trata {nome} como texto literal, e a saída vira exatamente Olá, {nome}!, com as chaves e tudo, em vez do valor esperado. Não há mensagem de erro para te alertar, então esse é um dos bugs mais fáceis de passar despercebido: sempre que uma f-string "não funcionar", confira primeiro se o f não ficou faltando.
nome = "Marina"
idade = 29
print("Olá, {nome}! Você tem {idade} anos.")Adicione o f que falta antes da aspa.
produto, preco e quantidade já criadas no código, monte uma f-string e guarde em recibo exatamente o texto "3x Caderno = R$ 26.70" (o preço total, preço vezes quantidade, formatado com duas casas decimais usando :.2f).produto = "Caderno"
preco = 8.90
quantidade = 3
# monte recibo aqui, como uma f-string
recibo = ""
🧩 Este é um exercício com correção automática — abra no app para completá-lo e verificar.