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())