import asyncio
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"}, # Tentativa de inscrição duplicada
]
async def inscrever_aluno(aluno):
print(f'Iniciando inscrição do aluno {aluno["nome"]}...')
# verificar curso que o aluno deseja se inscrever
curso_desejado = aluno["curso"]
print(f'O aluno {aluno["nome"]} deseja se inscrever no curso {curso_desejado}. Verificando vagas disponíveis...')
await asyncio.sleep(2)
# verificar se há vagas disponíveis, se não houver notificar o aluno
curso = cursos[curso_desejado]
if curso['vagas'] > 0:
await asyncio.sleep(3)
print(f'O curso {curso_desejado} possui {curso["vagas"]} vagas disponíveis. Verificando se o aluno {aluno["nome"]} já esta incrito...')
print(f'Lista de alunos previamente inscritos no curso {curso_desejado}:')
print(curso["inscritos"])
if aluno['nome'] in curso['inscritos']:
print(f'O aluno {aluno["nome"]} já está inscrito no curso {curso_desejado}.')
else:
curso['inscritos'].append(aluno["nome"])
print(f'Aluno {aluno["nome"]} ainda não inscrito no curso {curso_desejado}. Realizando inscrição...')
print(f'Aluno {aluno["nome"]} inscrito com sucesso no curso {curso_desejado}.')
print('Atualizando o numero de vagas...')
curso['vagas'] = curso['vagas'] - 1
print(f'Restam {curso["vagas"]} vagas no curso {curso_desejado}.')
else:
print(f'O curso {curso_desejado} não possui mais vagas disponíveis. Não foi possível inscrever o aluno {aluno["nome"]}.')
# verificar se o aluno já está inscrito no curso desejado, se estiver, notificar o aluno
async def main():
tarefas = [asyncio.create_task(inscrever_aluno(a)) for a in alunos]
await asyncio.gather(*tarefas)
print('\nSitualção final dos cursos: \n')
for c in cursos:
curso = cursos[c]
vagas = curso["vagas"]
inscritos = curso["inscritos"]
print(f'{c} | Vagas: {vagas} | Inscritos: {inscritos}')
asyncio.run(main())