1
resposta

[Projeto] Calculando média

import re 



def obter_notas_alunos():
    """
    Obtem as notas dos alunos

    Verifica se as notas estão separadas por vírgula.
    Retorna as notas inseridas em uma lista; caso algum erro seja encontrad, repete a entrada.
    """
    padrao = r"\d+(?:\.\d+)?"
    while True:        
        entrada = input('Digite as notas dos alunos separadas por vírgula: ')        
        notas = re.findall(padrao, entrada)

        if notas:
            try:
                notas = [float(n) for n in notas]
                return notas
            except ValueError:
                print('Erro ao converter as notas. Insira valores válidos (EX: 8.5, 7.0).')
        else:
            print('Entrada inválida. Digite apenas números separados por vírgula.')
            

def obter_media_notas(notas):
    """
    Obtem a média das notas

    Realiza a soma de todas as notas obtidas e calcula a média.
    Retorna 0 caso a lista esteja vazia.
    """    
    return sum(notas) / len(notas) if notas else 0


def main():
    notas = obter_notas_alunos()
    media = obter_media_notas(notas)
    print(f'Média final da turma: {media:.2f}')


if __name__ == '__main__':
    main()
1 resposta

Oi, Matheus! Como vai?

Seu uso de expressões regulares para filtrar os valores numéricos foi um ótimo recurso — uma solução elegante e que dá mais flexibilidade à entrada. Além disso, separar a lógica em funções bem definidas torna o código muito mais organizado e legível.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!