Sei que o exercício poderia ser muito mais simples que isso, mas aproveitei logo para tentar implementar todas as validações que eu consegui pensar.
from statistics import mean
def calcular_media(notas: list[float]) -> float:
"""Calcula a média aritmética de uma lista de notas."""
if not notas:
return 0.0
media_das_notas = mean(notas)
return media_das_notas
def receber_notas(mensagem: str) -> float:
"""Solicita e valida a entrada de uma nota do usuário."""
while True:
try:
nota = float(input(mensagem))
if 0 <= nota <= 10:
return nota
else:
print('Digite uma nota entre 0 e 10.')
except ValueError:
print('Digite um valor numérico válido.')
def exibir_situacao(media: float):
"""Exibe a situação do aluno com base na sua média final."""
if media >= 7:
print(f'Aprovado com média {media:.1f}')
elif media >= 5:
print(f'Recuperação com média {media:.1f}')
else:
print(f'Reprovado com média {media:.1f}')
def main():
"""Função principal que realiza a execução do programa."""
notas = []
while True:
try:
numero_de_notas = int(input('Digite o número de notas que deseja inserir: '))
if numero_de_notas > 0:
break
else:
print('Digite um número maior que zero.')
except ValueError:
print('Digite um número inteiro válido')
for i in range(numero_de_notas):
notas.append(receber_notas(f'Digite a {i + 1}ª nota: '))
media = calcular_media(notas)
exibir_situacao(media)
if __name__ == '__main__':
main()