1
resposta

Calculando a média de notas

import msvcrt, os

def limpar_tela() -> None:
    os.system("cls")

def pausa_limpa(texto) -> None:
    print()
    print(texto)
    print("Aperte uma tecla para continuar", end="", flush=True)
    msvcrt.getch()
    limpar_tela()

def main() -> None:
    while True:
        entrada = input("Digite as notas dos alunos separadas por vírgula ou 's' para sair: ").strip()

        if entrada.casefold() in ["s", "sair"]:
            print("Fim do programa")
            break

        try:
            notas = [
                validar_nota(nota.strip())
                for nota in entrada.split(",")
                if nota.strip()
            ]

            if not notas:
                raise ValueError("Nenhuma nota válida foi informada.")
            
        except(ValueError, TypeError) as e:
            pausa_limpa(f"Entrada inválida: {e}\n")
            continue
        
        imprimir_media(notas)

def validar_nota(entrada: float) -> float:   
    try:
        nota = float(entrada)
    except ValueError:
        raise TypeError(f"Deve ser um número decimal")
    
    if nota < 0 or nota > 10:
        raise ValueError(f"Insira uma nota valida, entre 0 e 10.")

    return nota

def imprimir_media(lista: list) -> float:
    media = sum(lista) / len(lista)

    print(f"Média final da turma: {media:.2f}")

main()


1 resposta

Oi, Rafaela! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Eu gostei bastante da sua organização com main(), separando responsabilidades em funções como validar_nota() e imprimir_media(). Isso deixa o código mais claro e reutilizável.

Também chamou atenção o uso de casefold() e da compreensão de lista para tratar as entradas, ficou bem estruturado e seguro contra valores inválidos.

Se quiser, pode testar a função round() pra trabalhar o arredondamento antes da exibição, caso queira armazenar a média já arredondada.


notas = [8.5, 7.0, 9.3]
media = sum(notas) / len(notas)
media_arredondada = round(media, 2)
print(media_arredondada)

Nesse codigo, round(media, 2) arredonda a media para duas casas decimais antes de imprimir, o que pode ser util caso voce precise reutilizar esse valor depois.

Alura

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