1
resposta

Classificando estudantes por média

class Classificador:
    def __init__(self, estudante: dict):
        self.estudante = estudante

    def ler_nome(self):
        nome = input("Digite o nome do estudante: ")
        if not nome.strip():
            print("Nome inválido. Atribuindo 'Desconhecido'.")
            self.estudante["nome"] = "Desconhecido"
        else:
            self.estudante["nome"] = nome.strip()

    def ler_notas(self):
        for chave in ["nota1", "nota2", "nota3"]:
            try:
                self.estudante[chave] = self.validar_notas(float(input(f"Digite o valor para {chave}: ")), chave)                 
            except ValueError:
                print(f"Entrada inválida. Atribuindo 0.0 a {chave} do aluno {self.estudante["nome"].capitalize()}.")
                self.estudante[chave] = 0.0

    def validar_notas(self, nota: str, chave: str):
        if not (0.0 <= nota <= 10.0):
            print(f"Valor inválida para {chave}. Deve estar entre 0 e 10. Atribuindo 0.0.")
            return 0.0
        return nota 

    def calcular_media(self):
        self.estudante["media"] = (self.estudante["nota1"] + self.estudante["nota2"] + self.estudante["nota3"]) / 3

    def classificar(self):
        if self.estudante["media"] >= 7.0:
            self.estudante["status"] = "aprovado"
        elif 5.0 <= self.estudante["media"] < 7.0:
            self.estudante["status"] = "recuperação"
        else:
            self.estudante["status"] = "reprovado"
    
    def exibir_resultado(self):
        print(
            f"Estudante {self.estudante['nome'].capitalize()} "
            f"{self.estudante['status'].upper()} "
            f"com média {self.estudante['media']:.2f}"
        )


estudante = {
    "nome": "",
    "nota1": 0.0,
    "nota2": 0.0,
    "nota3": 0.0,
    "media": 0.0,
    "status": ""
}

classificador = Classificador(estudante)
classificador.ler_nome()
classificador.ler_notas()
classificador.calcular_media()
classificador.classificar()
classificador.exibir_resultado()
1 resposta

E aí! Tudo bem?

Parabéns, mantenha o ritmo nos exercícios!

Percebi que você praticou o uso de classes para encapsular a lógica do programa, aplicou muito bem o tratamento de exceções com try except para garantir entradas válidas e ainda entendeu a relevância de validação de dados para manter a integridade das informações durante o processamento.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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