Crie uma classe chamada Aluno que represente um estudante com os seguintes atributos: nome, idade, curso e uma lista de notas. A classe deve conter um construtor que receba os quatros atributos como parâmetros e os
inicialize, mas deixe o último como facultativo. Um método chamado exibir_dados() que imprime os dados do aluno de forma organizada. Um método chamado eh_maior_de_idade() que retorna True se o aluno tiver 18 anos ou mais, e False caso contrário. E um método para retornar a média das notas.

Passo 1

Vamos definir a classe Aluno e seu construtor. Receberemos nome, idade, curso e um parâmetro opcional notas. Para evitar problemas com listas mutáveis como valor default, usaremos None e depois inicializaremos com uma lista vazia.

Passo 2

Implementamos o método exibir_dados(), que mostra de forma organizada cada atributo do aluno, incluindo a lista de notas (se houver).

Passo 3

Criamos o método eh_maior_de_idade(), que verifica se idade é maior ou igual a 18 e retorna True ou False.

Passo 4

Adicionamos o método calcular_media(), que soma as notas e divide pela quantidade de elementos. Se a lista estiver vazia, retornamos None para indicar que não há média.

Resposta

class Aluno:
 def __init__(self, nome, idade, curso, nota\(s=N\)one):
 """
 Construtor da classe Aluno.
 :param nome: str
 :param idade: int
 :param curso: str
 :param notas: list de números (opcional)
 """
 self.nome = nome
 self.idade = idade
 self.curso = curso
 # evita usar lista mutável como default
 self.notas = notas if notas is not None else []

 def \(exibir_dados\)(self):
 """
 Imprime os dados do aluno de forma organizada.
 """
 print(f"Nome: {self.nome}")
 print(f"Idade: {self.idade}")
 print(f"Curso: {self.curso}")
 if self.notas:
 \(notas_formatadas\) = ", ".join(str(n) for n in self.notas)
 print(f"Notas: [{notas_formatadas}]")
 else:
 print("Notas: [] (nenhuma nota registrada)")

 def \(eh_maior_de_idade\)(self):
 """
 Retorna True se o aluno tiver 18 anos ou mais, caso contrário False.
 """
 return self.idade >\(=18\)

 def \(calcular_media\)(self):
 """
 Retorna a média das notas ou None se não existirem notas.
 """
 if not self.notas:
 return None
 return sum(self.notas) / len(self.notas)
Exemplo de uso:
a\(1=\) Aluno("Mariana", 20, "Engenharia", [8.5, 7.0, 9.0])
a1.\(exibir_dados\)()
# Nome: Mariana
# Idade: 20
# Curso: Engenharia
# Notas: [8.5, 7.0, 9.0]

print(a1.\(eh_maior_de_idade\)()) # True
print(a1.\(calcular_media\)()) # 8.166666666666666

a\(2=\) Aluno("Pedro", 17, "Matemática")
a2.\(exibir_dados\)()
# Nome: Pedro
# Idade: 17
# Curso: Matemática
# Notas: [] (nenhuma nota registrada)

print(a2.\(eh_maior_de_idade\)()) # False
print(a2.\(calcular_media\)()) # None

Exercícios relacionados