Olá, Esdras. Como vai?
Parabéns pela evolução no código! É muito bom ver que você foi além do básico e já incluiu o tratamento de exceções com o bloco try-except. Essa é uma excelente prática para evitar que o programa "quebre" caso o usuário digite uma letra ou um número decimal quando o sistema espera um inteiro.
A lógica da paridade utilizando o operador de módulo (%) é a forma mais eficiente de resolver esse problema. Para complementar o seu entendimento, vale reforçar o que acontece "por baixo dos panos": o operador % retorna o resto da divisão.
- Se
n % 2 == 0, significa que o número é divisível por 2 sem deixar resto, logo, ele é par. - Caso contrário, ele é ímpar.
Para agregar valor ao seu aprendizado, deixo algumas sugestões de boas práticas:
1. Mensagens de erro específicas:
No seu except ValueError, você tratou muito bem o erro de entrada. Uma dica de legibilidade é sempre manter essas mensagens claras para que o usuário saiba exatamente o que corrigiu.
2. O uso do Finally:
Você utilizou o finally corretamente. Lembre-se que este bloco será executado sempre, ocorrendo um erro ou não. Em projetos maiores, ele é muito usado para fechar conexões com bancos de dados ou arquivos, garantindo que o programa limpe os recursos utilizados.
3. Evoluindo o código (Dica de Pythonista):
Se você quiser deixar o código ainda mais robusto, pode colocar o input dentro de um laço de repetição while True, para que o programa continue pedindo o número até que o usuário digite um valor válido, em vez de apenas encerrar com a mensagem de erro.
while True:
try:
n = int(input("Digite um número inteiro: "))
if n % 2 == 0:
print(f"{n} é um número par.")
else:
print(f"{n} é um número ímpar.")
break # Sai do laço se der tudo certo
except ValueError:
print("Erro: Entrada inválida. Tente novamente.")
Continue praticando, pois dominar o fluxo de controle e o tratamento de erros é o que diferencia um programador iniciante de um desenvolvedor preparado para o mercado!
Espero que possa ter lhe ajudado!