Ler a entrada do usuário e convertê-la em inteiros é uma tarefa comum na programação Python. Esse processo requer atenção cuidadosa ao tratamento de erros para garantir que seu programa não trave ao se deparar com entradas inesperadas. Este artigo o guiará pelas melhores práticas para ler entrada de inteiros em Python, cobrindo tanto Python 3 quanto Python 2.
Sumário
- Lendo Entrada Inteira em Python 3
- Tratamento Robusto de Erros em Python 3
- Lendo Entrada Inteira em Python 2
- Tratamento Robusto de Erros em Python 2
- Melhores Práticas e Técnicas Avançadas
- Perguntas Frequentes
Lendo Entrada Inteira em Python 3
Python 3 usa a função input()
para ler a entrada do usuário. Essa função sempre retorna uma string, então você deve convertê-la explicitamente para um inteiro usando int()
. No entanto, uma entrada não inteira causará um erro. A melhor abordagem é usar um bloco try-except
para lidar com possíveis exceções ValueError
.
while True:
try:
user_input = input("Digite um inteiro: ")
number = int(user_input)
break # Sai do loop se a entrada for válida
except ValueError:
print("Entrada inválida. Digite um inteiro.")
print("Você digitou:", number)
Tratamento Robusto de Erros em Python 3
O loop while True
garante que o programa continue solicitando ao usuário até que um inteiro válido seja inserido. Um tratamento de erros mais sofisticado pode incluir mensagens de erro específicas para diferentes tipos de entrada inválida ou validação de entrada usando expressões regulares para cenários mais complexos.
Lendo Entrada Inteira em Python 2
Em Python 2, raw_input()
é o método preferido para ler a entrada do usuário como uma string. Evite usar input()
em Python 2 porque ele tenta avaliar a entrada, o que pode levar a vulnerabilidades de segurança e comportamento inesperado.
while True:
try:
user_input = raw_input("Digite um inteiro: ")
number = int(user_input)
break
except ValueError:
print "Entrada inválida. Digite um inteiro."
print "Você digitou:", number
Tratamento Robusto de Erros em Python 2
O tratamento de erros em Python 2 é semelhante ao Python 3, usando o bloco try-except
. A mesma técnica de loop mostrada acima garante que o programa não trave em entradas inválidas.
Melhores Práticas e Técnicas Avançadas
Sempre valide a entrada do usuário. Não assuma que o usuário fornecerá o tipo de dado esperado. Usar blocos try-except
é parte fundamental do tratamento robusto de erros. Considere adicionar tratamento de exceções mais específico (por exemplo, tratamento de KeyboardInterrupt
) com base nas necessidades do seu aplicativo. Para cenários de validação complexos, expressões regulares podem ser uma ferramenta poderosa.
Perguntas Frequentes
- P: O que acontece se o usuário inserir um número de ponto flutuante?
R: A funçãoint()
trunca a parte decimal, convertendo o número de ponto flutuante em um inteiro (por exemplo,int(3.14)
retorna3
). Para lidar com números de ponto flutuante, usefloat()
. - P: Como posso lidar com outros tipos de erros?
R: Adicione mais blocosexcept
para lidar com exceções específicas comoKeyboardInterrupt
ouEOFError
. - P: Existem métodos de validação mais concisos?
R: Emboratry-except
seja claro, expressões regulares oferecem soluções mais concisas para regras de validação complexas.