import asyncio
import math
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 inscricao(aluno):
curso_sel = cursos[aluno['curso']]
if aluno['nome'] in curso_sel['inscritos']:
print(f"{aluno['nome']} já está inscrita no curso {aluno['curso']}! Inscrição rejeitada.")
return
if curso_sel["vagas"] > 0:
cursos[aluno['curso']]['inscritos'].append(aluno['nome'])
print(f"Inscrição confirmada para {aluno['nome']} no curso {aluno['curso']}! .\n")
return True
else:
print(f"Turma lotada! {aluno['nome']} não pôde se inscrever no curso {aluno['curso']}.\n")
return False
async def processamento(candidato):
print(f"Inscrevendo {candidato['nome']} no curso {candidato['curso']}...")
valido = await inscricao(candidato)
if not valido:
return
async def main():
tasks = [ asyncio.create_task(processamento(candidato)) for candidato in alunos]
await asyncio.gather(*tasks)
print("Todos as inscrições foram processados!")
asyncio.run(main())