# Definir as Classes Aluno e turma:
class Aluno:
    def __init__(self, id_aluno, nome, objetivo):
        self.id_aluno = id_aluno
        self.nome = nome
        self.objetivo = objetivo
        self.progresso ={} # ex: {"Programação": 50.5%, "Base de dados":75.0%}
    
    def media_progresso(self):
        # Calcula a media do progresso do aluno
        if not self.progresso:
            return 0
        return sum(self.progresso.values()) / len(self.progresso)

    def __lt__(self, outro):
        # Menor média tem mais preoridade (para a fila de preoridade)
        return self.media_progresso() < outro.media_progresso()

class Turma:
    def __init__(self, nome_turma, mentor):
        self.nome_turma = nome_turma
        self.mentor = mentor
        self.alunos = {} # dicionário de alunos (ID do Aluno : Aluno)
        self.disciplinas = [] # listas de disciplinas (ex: ["Programação", "Base de dados", "Redes"])

# Função de mostrar o menu:
def mostrar_menu():
    print("\n--- Menu ProdigiAcademy ---")
    print("1. Criar turma")
    print("2. Adicionar aluno")
    print("3. Difinir disciplina")
    print("4. Registar progresso")
    print("5. consultar objectivos dos alunos")
    print("6. Consultar processo de um aluno")
    print("7. Ver disciplinas com dificuldades")
    print("8. Ver fila prioritaria de apoio")
    print("9. Sair")

# Função Prinncipal main():
from queue import PriorityQueue # Importa fila de prioridade
def main():
    turma = None # Inicialmente, não há turma criada
    
    while True:
        mostrar_menu()
        op = input("Opção:")

        if op == '1':
            print("Criar turma: ")
            nome_turma = input("Nome da turma: ")
            mentor = input("Nome do mentor: ")
            turma = Turma(nome_turma, mentor) # Cria a turma
            print("Turma criada com sucesso!")
        elif op == '2' and turma:
            print("Adicionar aluno: ")
            id_aluno = input("ID do Aluno: ")
            nome = input("Nome do Aluno: ")
            objetivo = input("Objetivo de aprendizagem: ")
            aluno = Aluno(id_aluno, nome, objetivo)
            turma.alunos[id_aluno] = aluno # Adiciona o aluno ao dicionario da turma
            print("Aluno adcionado.")
        elif op == '3' and turma:
            print("Definir disciplina:")
            disciplina = input("Nome da disciplina:")
            turma. disciplinas.append(disciplina) # Adiciona a disciplina á lista de turma
            print("Disciplina definida.")
        elif op == '4' and turma:
            print("Registar processo:")
            id_aluno = input("ID do Aluno: ")
            disciplina = input("Disciplina: ")
            processo = float(input("Processo (0-100): "))
            if id_aluno in turma.alunos:
                turma.alunos[id_aluno].progresso[disciplina] = processo
                print("Processo registado. ")
            else:
                print("Aluno não encontrado.")
        elif op =='5' and turma:
            print("Consultar objetivos dos alunos: ")
            for id_aluno, aluno in turma.alunos.items():
                print(f"{id_aluno} - {aluno.nome}: {aluno.objetivo}")
        
        elif op == '6' and turma:
            print("Consultar progresso de um aluno:")
            id_aluno = input("ID do aluno: ")
            if id_aluno in turma.alunos:
                print(f"Progresso de {turma.alunos[id_aluno].nome}:")
                for disciplina, processo in turma. alunos[id_aluno]. progresso.items():
                    print(f" {disciplina}: {processo}%")                  
            else: 
                print("Aluno não encontrado.")
        elif op == '7' and turma:
            print("Ver disciplinas com dificuldades: ")
            disciplina_dificeis =[]
            for disciplina in turma.disciplinas:
                alunos_com_dificuldades = [
                    aluno.nome for aluno in turma.alunos.values()
                    if disciplina in aluno.progresso and aluno.progresso[disciplina] < 50
                ]
                if alunos_com_dificuldades:
                    disciplina_dificeis.append((disciplina, alunos_com_dificuldades))
            if disciplina_dificeis:
                print("Disciplinas com dificuldades: ")
                for disciplina, aluno in disciplina_dificeis:
                    print(f" {disciplina}: {', '.join(aluno)}")
            else:
                print("Não há disciplinas com dificuldades.")
        elif op == '8' and turma:
            print("Ver fila prioritaria de apoio:")
            fila_prioridade = PriorityQueue()
            for aluno in turma.alunos.values():
                fila_prioridade.put(aluno) # Adiciona alunos á fila (ordena automaticamente)
            print("Fila de prioridade (menor média para maior):")
            while not fila_prioridade.empty():
                aluno = fila_prioridade.get()
                print(f" {aluno.nome} (Média: {aluno.media_progresso():.2f}%)") # Limita a 2 casas decimais 
        elif op =='9':
            print("A encerrar ProdigiAcademy.")
            break # Sai do loop
        
main()

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: