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
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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Maiúsculas e minúsculas: upper, lower, title e capitalize.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
Os quatro métodos da caixa das letras. .upper() deixa TUDO maiúsculo; .lower() deixa tudo minúsculo.
A string original não muda nunca. Chamar nome.upper() numa linha solta e esperar que nome tenha mudado. Não mudou: o resultado foi jogado fora.
Uso real: comparar respostas do usuário. Em todo menu interativo: a opção digitada passa por .lower() antes do if.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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étodo | O que faz | "olá, python" vira |
|---|---|---|
| .upper() | Tudo em maiúsculas | OLÁ, PYTHON |
| .lower() | Tudo em minúsculas | olá, python |
| .title() | Primeira letra de cada palavra em maiúscula | Olá, Python |
| .capitalize() | Só a primeira letra da frase em maiúscula | Olá, 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á, pythonDigite 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) # MARIAO 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.