Oii, William.
Que legal que você está praticando e já pensando em como melhorar.
O uso do try...except que você implementou é, na verdade, a forma mais pythônica (o padrão recomendado na comunidade Python) de lidar com isso. Mas, existem outras abordagens interessantes, especialmente se você quiser evitar que o programa pare ou se quiser validar antes de tentar converter.
1. Utilizando métodos de string (isdigit):
Se você quer verificar se a entrada é composta apenas por números antes mesmo de tentar a conversão, pode usar o método .isdigit().
numero_input = input('Digite um número: ')
if numero_input.isdigit():
numero = int(numero_input)
if numero % 2 == 0:
print(f'O número {numero} é par')
else:
print(f'O número {numero} é ímpar')
else:
print(f'"{numero_input}" não é um número inteiro válido.')
Nota: O isdigit() funciona bem para números inteiros positivos. Se o usuário digitar um número negativo (ex: -5), ele retornará False por causa do sinal de menos.
2. Melhorando a experiência com um laço de repetição (while):
Uma técnica muito usada é "prender" o usuário em um laço até que ele digite um valor correto. Assim, o programa não termina com um erro, ele apenas pede a informação novamente.
def pedir_numero():
while True:
entrada = input('Digite um número: ')
try:
return int(entrada)
except ValueError:
print(f'Ops! "{entrada}" não é um número. Tente novamente.')
# Uso:
numero = pedir_numero()
if numero % 2 == 0:
print(f'O número {numero} é par')
else:
print(f'O número {numero} é ímpar')
3. Pequena observação sobre o elif no seu código
No seu código original, você usou:
if numero % 2 == 0:
# ...
elif numero % 2 != 0:
# ...
Como um número ou é par ou é ímpar (não há uma terceira opção), você pode usar apenas o else. Isso deixa o código mais limpo e rápido, pois o computador não precisa fazer uma segunda conta matemática para verificar o que já é óbvio por exclusão.
Resumo das abordagens:
| Método | Vantagem | Desvantagem |
|---|
| Try/Except | Lida com qualquer erro de conversão e é o padrão da linguagem. | Pode parecer um pouco "verboso" para scripts muito pequenos. |
| isdigit() | Simples e evita a "exceção". | Não reconhece números negativos ou decimais. |
| While Loop | Garante que o programa só continue com um dado válido. | Requer cuidado para não criar um laço infinito por erro de lógica. |
Continue assim!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!