Oii João Filipe,
Seu código tá muito bem estruturado e demonstra que você já domina conceitos importantes da linguagem, como o tratamento de exceções e a modularização através de funções.
Gostaria de destacar três pontos excelentes na sua implementação:
- Documentação (Docstrings): O uso de comentários explicativos logo abaixo da definição das funções (
"""Exibe o menu...""") é uma prática profissional essencial para manter o código legível. - Tratamento de Erros: A função ler_numero com o bloco
try/except garante que o programa não quebre se o usuário digitar uma letra sem querer. Isso melhora muito a experiência de uso. - Modernidade: O uso do
match/case mostra que você está utilizando as versões mais recentes do Python (3.10+), o que é ótimo.
Sugestão de melhoria (Princípio DRY - Don't Repeat Yourself):
Notei que as linhas para pedir o primeiro número e o segundo número se repetem dentro de quase todas as opções do case. Uma boa prática é evitar repetições. Você pode solicitar os números uma única vez antes de entrar no match, mas cuidando para não pedir isso caso o usuário escolha a opção de sair (5) ou uma opção inválida.
Veja como ficaria essa refatoração lógica:
# Trecho do loop principal
if __name__ == "__main__":
while True:
try:
menu()
opcao = int(input("\nEscolha uma opção: "))
# Primeiro verificamos se é para sair
if opcao == 5:
print("Saindo...")
break
# Verificamos se é uma opção de cálculo válida antes de pedir os números
elif opcao in [1, 2, 3, 4]:
num1 = ler_numero("Digite o primeiro número: ")
num2 = ler_numero("Digite o segundo número: ")
match opcao:
case 1:
print(f"{num1} + {num2} = {somar(num1, num2)}")
case 2:
print(f"{num1} - {num2} = {subtrair(num1, num2)}")
case 3:
print(f"{num1} x {num2} = {multiplicar(num1, num2)}")
case 4:
resultado = dividir(num1, num2)
if resultado is not None:
print(f"{num1} / {num2} = {resultado}")
else:
print("Opção inválida. Digite de 1 a 5.")
except ValueError:
print("Digite apenas números inteiros para a opção.")
Dessa forma, seu código fica mais limpo e fácil de manter. Se amanhã você quiser mudar a frase "Digite o primeiro número", mudará em apenas um lugar, e não em quatro.
Parabéns pelo projeto.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!