1
resposta

[RESPOSTA]

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 verificacao_vagas(aluno):
    for curso in cursos:
        if aluno["curso"] == curso:
            print(f"Inscrevendo {aluno["nome"]} no curso {aluno["curso"]}...")
            if aluno["nome"] in cursos[curso]["inscritos"]:
                print(f"{aluno["nome"]} já está inscrita no curso {aluno["curso"]}! Inscrição rejeitada.")
                return

            if cursos[curso]["vagas"] == 0:
                print(f"Turma lotada! {aluno["nome"]} não pôde se inscrever no curso {aluno["curso"]}.")
                return

            cursos[curso]["inscritos"].append(aluno["nome"])
            cursos[curso]["vagas"] -= 1
            print(f"Inscrição confirmada para {aluno["nome"]} no curso {aluno["curso"]}")
            return

async def main():
    tarefas = [asyncio.create_task(verificacao_vagas(aluno)) for aluno in alunos]
    await asyncio.gather(*tarefas)
    print("Todas as inscrições foram processadas!")

asyncio.run(main())
1 resposta

Olá, Mauricio, como vai?

Seu código está muito bem estruturado para resolver o problema de forma assíncrona. A lógica de verificação de vagas, confirmação da inscrição, rejeição de duplicadas e tratamento de turmas lotadas está bem clara e cobre todas as regras que foram propostas no exercício.

Continue compartilhando seus exercícios aqui no fórum, é uma ótima forma de consolidar o aprendizado e trocar ideias com outras pessoas. O fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!