Tratamento de Erros de Input em Python: Dicas Práticas
Olá, futuro mestre do Python! 🐍 Se você está aqui, provavelmente já se deparou com aquela mensagem de erro assustadora ao tentar coletar dados de um usuário no Python. Talvez o programa esperasse um número e o usuário digitou “banana”. Ou quem sabe ele apertou Enter sem querer, e o Python jogou um ValueError
na sua cara. Não se preocupe! Neste artigo, vamos mergulhar no mundo dos erros na entrada de dados em Python, entender por que eles acontecem e, o mais importante, como evitá-los com exemplos práticos que você pode testar agora mesmo. Vamos aprender juntos, com um toque de humor e muitos códigos para você brincar!
A propósito, manter este blog exige café, tempo e um pouco de dinheiro. As propagandas que você vê por aqui ajudam a cobrir os custos, já que eu não ganho nada diretamente por escrever esses artigos. Se você gosta do conteúdo, considere adquirir os livros de Python que recomendo na Amazon através dos meus links de afiliado ou confira os cursos que anuncio no blog. Quem sabe, se a receptividade for boa, eu me anime a escrever um livro sobre Python no futuro! 😄 Agora, vamos ao que interessa.
Por que os erros na entrada de dados acontecem?
Quando você usa a função input()
em Python, está pedindo ao usuário para digitar algo. O problema é que os usuários (incluindo você e eu) são imprevisíveis. Eles podem digitar letras onde você esperava números, deixar o campo em branco ou até tentar trollar o programa com emojis. 😜 O Python, sendo bem exigente, não lida bem com essas surpresas e pode lançar erros como:
- ValueError: Quando o usuário digita algo que não pode ser convertido para o tipo esperado (ex.: tentar converter “abc” para int).
- KeyboardInterrupt: Quando o usuário interrompe o programa (Ctrl+C).
- EOFError: Quando o usuário tenta encerrar a entrada (Ctrl+D ou Ctrl+Z, dependendo do sistema).
- TypeError: Quando você tenta usar o dado de forma inadequada.
Nosso objetivo é criar programas que sejam robustos e lidem com essas situações sem quebrar. Vamos ver como fazer isso com exemplos práticos.
Exemplo 1: Capturando um número inteiro
Imagine que você está criando um programa que calcula a idade de uma pessoa daqui a 10 anos. Você precisa que o usuário digite a idade atual, que deve ser um número inteiro. Aqui está um código inicial (e ingênuo):
idade = int(input("Digite sua idade: "))
idade_futura = idade + 10
print(f"Daqui a 10 anos, você terá {idade_futura} anos!")
Teste esse código. Se o usuário digitar 25, ele verá:
Digite sua idade: 25
Daqui a 10 anos, você terá 35 anos!
Perfeito, né? Mas e se o usuário digitar vinte e cinco ou simplesmente apertar Enter? O Python vai jogar um ValueError
na sua cara. Vamos melhorar esse código usando tratamento de exceções com try
e except
:
while True:
try:
idade = int(input("Digite sua idade: "))
idade_futura = idade + 10
print(f"Daqui a 10 anos, você terá {idade_futura} anos!")
break # Sai do loop se tudo der certo
except ValueError:
print("Ops! Por favor, digite um número inteiro válido.")
Agora, se o usuário digitar algo inválido, como banana, o programa não quebra. Ele exibe uma mensagem amigável e pede a entrada novamente.
Digite sua idade: banana
Ops! Por favor, digite um número inteiro válido.
Digite sua idade: 25
Daqui a 10 anos, você terá 35 anos!
Por que isso funciona? O bloco try
tenta executar o código arriscado (int(input()))
, e se algo der errado, o except ValueError
captura o erro e dá uma chance ao usuário de tentar novamente. O while True
mantém o loop até que a entrada seja válida.
Exemplo 2: Validando entradas específicas
Agora, vamos supor que você quer que o usuário digite apenas uma idade entre 0 e 120 anos (porque, convenhamos, ninguém tem 150 anos ou idade negativa, né?). Vamos adicionar uma validação extra:
while True:
try:
idade = int(input("Digite sua idade (0 a 120): "))
if 0 <= idade <= 120:
idade_futura = idade + 10
print(f"Daqui a 10 anos, você terá {idade_futura} anos!")
break
else:
print("Idade inválida! Digite um número entre 0 e 120.")
except ValueError:
print("Ops! Digite um número inteiro válido.")
Teste esse código! Se o usuário digitar -5 ou 200, ele verá uma mensagem pedindo uma idade válida. Se digitar abc, o ValueError
entra em ação. Esse código é mais robusto porque combina tratamento de exceções com validação lógica.
Exemplo 3: Lidando com entradas vazias e outros erros
Às vezes, o usuário pode simplesmente apertar Enter sem digitar nada, ou até tentar encerrar o programa com Ctrl+C. Vamos criar um programa que lida com essas situações. Aqui, queremos que o usuário digite o nome de uma cidade e um número de dias para uma previsão do tempo fictícia:
while True:
try:
cidade = input("Digite o nome da cidade: ").strip()
if not cidade:
print("Ei, não deixe o campo vazio! Digite o nome de uma cidade.")
continue
dias = int(input("Quantos dias de previsão (1 a 7)? "))
if 1 <= dias <= 7:
print(f"Previsão do tempo para {cidade} por {dias} dias: Ensolarado! ☀️")
break
else:
print("Por favor, escolha entre 1 e 7 dias.")
except ValueError:
print("Ops! O número de dias deve ser um número inteiro.")
except KeyboardInterrupt:
print("\nPrograma interrompido pelo usuário. Até mais!")
break
except EOFError:
print("\nEntrada encerrada. Até mais!")
break
Teste esse código e tente:
- Deixar o campo da cidade vazio (apertar Enter).
- Digitar uma letra no campo de dias.
- Usar Ctrl+C para interromper
O programa lida com tudo isso de forma elegante! A função strip()
remove espaços em branco, e verificamos se a string está vazia com if not cidade
. Também capturamos KeyboardInterrupt
e EOFError
para evitar que o programa quebre de forma feia.
Dicas para evitar erros na entrada de dados
- Use
try
eexcept
sempre: Eles são seus melhores amigos para lidar com entradas inesperadas. - Valide os dados: Não confie que o usuário vai seguir as regras.
- Verifique intervalos, tipos e formatos.Dê feedback claro: Mensagens como “Digite um número válido” ajudam o usuário a entender o erro.
- Teste exaustivamente: Tente quebrar seu próprio programa com entradas malucas (letras, números negativos, emojis, etc.).
- Considere entradas vazias: Sempre verifique se o usuário deixou o campo em branco
Um pedido do coração ❤️
Escrever artigos como este leva tempo e dedicação, e eu faço isso porque amo ensinar Python! As propagandas no blog ajudam a pagar as contas, mas se você quiser apoiar ainda mais, considere comprar os livros de Python que recomendo através dos meus links de afiliado na Amazon ou conferir os cursos que anuncio. Se vocês gostarem bastante, quem sabe eu não lanço um livro sobre Python no futuro? 😄

Vamos continuar aprendendo juntos?
Gostou do artigo? Então não pare por aqui! Explore outros posts no blog para turbinar suas habilidades em Python. Que tal se inscrever na nossa newsletter para receber dicas exclusivas e novos artigos diretamente no seu e-mail? Deixe um comentário abaixo contando como você lida com erros de entrada nos seus programas ou se já passou por alguma situação engraçada com input()
. Sua interação me motiva a continuar criando conteúdo!
Descubra mais sobre Alexsandro Felix
Assine para receber nossas notícias mais recentes por e-mail.