Módulo 12 - Trabalhando com textos

Maiúsculas e minúsculas: upper, lower, title e capitalize

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

Velocidade

O que você vai aprender

  • Usar .upper(), .lower(), .title() e .capitalize() em qualquer string.
  • Entender por que os métodos devolvem um texto novo e não alteram o original.
  • Guardar o resultado de um método numa variável para poder usá-lo.
  • Comparar respostas do usuário sem depender de como ele digitou.

Os quatro métodos da caixa das letras

Nos módulos anteriores você criou strings, percorreu strings com for e guardou strings em listas e dicionários. Agora chegou a hora de transformá-las. O Python traz dezenas de métodos prontos para texto, e método é uma ideia simples: uma função que pertence ao valor e é chamada com um ponto, como em nome.upper(). Você já usou métodos sem cerimônia no módulo 10, quando chamou .append() numa lista. Com strings, a lógica é idêntica.

Os quatro primeiros métodos que valem aprender mexem na caixa das letras, ou seja, em quais são maiúsculas e quais são minúsculas. A tabela abaixo resume o que cada um faz com a mesma frase de entrada.

MétodoO que faz"olá, python" vira
.upper()Tudo em maiúsculasOLÁ, PYTHON
.lower()Tudo em minúsculasolá, python
.title()Primeira letra de cada palavra em maiúsculaOlá, Python
.capitalize()Só a primeira letra da frase em maiúsculaOlá, python

Os quatro métodos de caixa aplicados na mesma string de entrada.

frase = "olá, python"

print(frase.upper())       # OLÁ, PYTHON
print(frase.lower())       # olá, python
print(frase.title())       # Olá, Python
print(frase.capitalize())  # Olá, python

Digite e rode no Playground. Repare que o resultado de cada linha aparece transformado.

Um aviso honesto sobre o .title(): ele capitaliza toda palavra, sem exceção. Aplicado em um nome brasileiro como joão da silva, ele devolve João Da Silva, com o Da maiúsculo, que não é como escrevemos. Na prática deste módulo você vai construir uma solução melhor que o .title() para nomes. Guarde essa limitação.

A string original não muda nunca

Agora o detalhe que derruba mais iniciantes nesta parte do curso. Rode o código abaixo e observe a última linha com atenção.

nome = "maria"
nome.upper()
print(nome)  # maria (continua exatamente igual!)

O .upper() rodou, mas o print mostra maria em minúsculas. Nada mudou.

O que aconteceu? Em Python, strings não podem ser alteradas depois de criadas. O nome técnico disso é imutabilidade, mas a ideia dispensa jargão: pense na string como uma foto impressa. Você não consegue trocar a cor de uma foto já revelada; o que dá para fazer é revelar uma foto nova com o filtro aplicado. É exatamente isso que .upper() faz: fabrica uma string nova, toda em maiúsculas, e a devolve para você. Se você não guardar essa string nova em uma variável, ela se perde no mesmo instante.

nome = "maria"
nome_gritado = nome.upper()

print(nome)          # maria
print(nome_gritado)  # MARIA

# Também dá para reaproveitar a mesma variável:
nome = nome.upper()
print(nome)          # MARIA

O jeito certo: guardar o resultado. A última forma substitui o valor antigo pelo novo.

Uso real: comparar respostas do usuário

Se esses métodos servissem só para deixar texto bonito, seriam nota de rodapé. O motivo de abrirem o módulo é outro: eles resolvem um problema que você já enfrentou no módulo 8, quando montou menus com while. O usuário é imprevisível. Peça para digitar sim e você vai receber sim, Sim, SIM e até sIM. Se o seu if compara com um único formato, todos os outros caem no else, e o programa parece quebrado para quem digitou uma resposta perfeitamente razoável.

resposta = input("Quer continuar? (sim/nao) ")

if resposta.lower() == "sim":
    print("Continuando...")
else:
    print("Até a próxima!")

# Digite SIM, Sim ou sim: todos entram no primeiro bloco.

Normalizar com .lower() antes de comparar aceita qualquer combinação de caixa.

A técnica tem nome de gente grande, normalização, e o princípio cabe numa frase: antes de comparar dois textos, leve os dois para o mesmo formato. Tanto faz usar .lower() ou .upper(), desde que os dois lados da comparação recebam o mesmo tratamento. A convenção da comunidade Python é minúsculas, e é a que este curso segue daqui em diante.

Teste rápido

Depois de rodar nome = "ana" e nome.upper() em linhas separadas, o que print(nome) mostra?

Perguntas frequentes

Qual a diferença entre .title() e .capitalize()?
O .title() põe em maiúscula a primeira letra de todas as palavras: bom dia, brasil vira Bom Dia, Brasil. O .capitalize() só mexe na primeira letra da frase inteira: Bom dia, brasil. Para frases comuns, .capitalize() costuma ser o que você quer; para nomes, nenhum dos dois é perfeito, como a prática do módulo vai mostrar.
Os métodos funcionam com letras acentuadas, como á e ç?
Funcionam. O Python 3 trabalha com Unicode, então "ação".upper() devolve AÇÃO, com acento e cedilha preservados. Essa é uma das vantagens de aprender Python 3: texto em português é tratado corretamente sem esforço extra.
Por que as strings do Python são imutáveis?
Por segurança e eficiência. Como uma string nunca muda, você pode passá-la para qualquer parte do programa sem medo de que alguém a altere por acidente, e o Python pode otimizar a memória por baixo dos panos. Quando você precisa de uma versão diferente, cria uma nova, o que os métodos fazem por você.
E se eu quiser mudar mesmo o valor da variável?
Reatribua: nome = nome.upper(). Isso não quebra a imutabilidade, porque a string antiga continua intacta; o que muda é a variável, que passa a apontar para a string nova. Na prática, o efeito é o que você queria: a partir dali, nome vale a versão maiúscula.
Existe um método que inverte a caixa, tipo maiúscula vira minúscula?
Existe: .swapcase() transforma PyThOn em pYtHoN. É raro precisar dele em programas reais, por isso não entrou na aula, mas vale conhecer. A lista completa de métodos de string está na documentação oficial, linkada nas fontes desta aula.
Comparar com .lower() funciona para qualquer palavra em português?
Para o uso deste curso, sim. Casos extremos de outros idiomas têm regras de caixa peculiares, e por isso a documentação oficial menciona o método .casefold() para comparações agressivas. Em programas em português, .lower() resolve, e é o padrão que a comunidade usa no dia a dia.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.