Oii, Fabio! Tudo certo?
Cara, é super normal esse sentimento de "será que escrevi demais?". Quando estamos aprendendo, nossa tendência é detalhar cada passo do raciocínio para garantir que a lógica funcione, e isso não é ruim.
O que seu código tem de bom:
Você teve um cuidado: a segurança.
Se o usuário digitar uma letra sem querer, a resolução oficial quebra (dá erro e para o programa). O seu código usa um bloco try/except, o que faz com que ele continue funcionando mesmo se houver um erro de digitação. Isso é uma prática excelente no mundo real.
Por que ele pareceu "verboso"?
A principal diferença é que a resolução oficial usou List Comprehension, que é aquele jeito do Python de criar listas em uma linha só: [float(nota) for nota in notas].
Pra deixar seu código mais direto sem perder a sua lógica de tratamento de erro, você poderia fazer pequenos ajustes:
- Ordem das coisas: Você definiu
tamanho_lista antes de limpar os dados. Se o usuário digitar algo errado, o seu tamanho vai contar o erro, mas a sua soma vai ignorar. Isso pode dar um resultado errado na média. - Responsabilidade única: Uma função de "calcular média" geralmente espera receber números prontos, e não se preocupar em converter strings.
Uma sugestão de equilíbrio:
Veja como você poderia manter sua segurança, mas com uma escrita mais limpa:
def calcular_media(notas_str):
notas_validas = []
for nota in notas_str:
try:
notas_validas.append(float(nota))
except ValueError:
print(f"Valor ignorado: {nota}")
# usamos o tamanho da lista de notas que REALMENTE foram convertidas
if not notas_validas:
return 0
return sum(notas_validas) / len(notas_validas)
entrada = input('Insira as notas (separadas por espaço): ').strip().split()
resultado = calcular_media(entrada)
print(f'Média final: {resultado:.2f}')
O veredito:
Seu código não está "errado". Ele está prevenido. Com o tempo, você vai naturalmente começar a usar recursos como as compreensões de lista para reduzir linhas, mas a lógica de proteção que você aplicou é um sinal de que você está pensando como um desenvolvedor que se preocupa com o usuário.
Continue assim! O importante é o código ser legível e resolver o problema.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!