0
respostas

[Dúvida] Minha resolução esta correta?

Resolvi desta forma, sei que a resolução do professor é muito mais simples, mas deu certo

cursos = {
    "Python Avançado": {"vagas": 2, "inscritos": []},
    "Java para Iniciantes": {"vagas": 1, "inscritos": []},
    "Machine Learning": {"vagas": 0, "inscritos": []},
}
 
alunos = [
    {"nome": "Alice", "curso": "Python Avançado"},
    {"nome": "Bruno", "curso": "Python Avançado"},
    {"nome": "Carlos", "curso": "Java para Iniciantes"},
    {"nome": "Daniela", "curso": "Machine Learning"},
    {"nome": "Alice", "curso": "Python Avançado"}, 
]

async def verifica_aluno(aluno):
    for curso_nome in cursos:
        if curso_nome == aluno['curso']:
            for inscrito in cursos[curso_nome]['inscritos']:
                if inscrito == aluno['nome']:
                    print(f"{aluno['nome']} já está inscrito no curso {curso_nome}! Inscrição rejeitada.")
                    return False
                else:
                    continue
            return True

async def verifica_vaga(aluno):
    await asy.sleep(1)
    for curso_nome in cursos:
        if curso_nome == aluno['curso']:
            if cursos[curso_nome]['vagas'] > len(cursos[curso_nome]['inscritos']):
                cursos[curso_nome]['inscritos'].append(aluno['nome'])
                return True
            else: 
                print(f"Turma lotada! {aluno['nome']} não pôde se inscrever no curso Machine Learning.\n")
                return False

async def inscreve_curso(aluno):
    print(f"Inscrevendo {aluno['nome']} no curso {aluno['curso']}...")
    aluno_ok = await verifica_aluno(aluno)
    if not aluno_ok:
        return
    
    vaga_ok = await verifica_vaga(aluno)
    if not vaga_ok:
        return
    print(f"Inscrição confirmada para {aluno['nome']} no curso {aluno['curso']}!\n")


async def main():
    for aluno in alunos:
        await inscreve_curso(aluno)
    print("Todas as inscrições foram processadas! ")
    
asy.run(main())