Oi Fábio, tudo bem? 😊
A sua dúvida é muito comum! 🤔
O try/except funciona da seguinte forma:
- O bloco dentro do
try é executado. - Se ocorrer um erro durante a execução desse bloco, o Python interrompe a execução do
try e procura por um bloco except que corresponda ao tipo de erro ocorrido. - Se um bloco
except correspondente for encontrado, o código dentro desse bloco é executado. - Se nenhum erro ocorrer no bloco
try, o bloco except é ignorado.
No seu código, o try tenta converter a entrada do usuário para um inteiro. Se o usuário digitar algo que não pode ser convertido para um inteiro (por exemplo, uma letra), um erro ocorrerá e o bloco except será executado.
Dentro do except, a função opcao_invalida() é chamada. Essa função provavelmente exibe uma mensagem de erro para o usuário.
Após o except, o programa continua a execução normalmente. No seu caso, após o except, o programa não faz nada.
A função main() é chamada dentro do bloco else. O bloco else é executado somente se nenhum erro ocorrer dentro do bloco try. No seu caso, o bloco else é executado somente se o usuário digitar um número inteiro válido.
Dentro do else, o programa verifica se a opção escolhida pelo usuário é válida (1 a 4). Se a opção for inválida, a função opcao_invalida() é chamada e a função main() é chamada novamente. Isso faz com que o programa volte ao início e peça para o usuário escolher uma opção novamente.
Em resumo:
- O
except é executado quando o usuário digita algo que não é um número inteiro. - O
else é executado quando o usuário digita um número inteiro válido. - A função
main() é chamada novamente quando o usuário digita uma opção inválida.
Espero ter ajudado a esclarecer sua dúvida! 💪
🎓 Para saber mais: