1
resposta

[RESPOSTA]

import asyncio
import random

async def aposta(jogo, RESULTADOS, futuro):
    print(f"Aposta no jogo {jogo["id"]} ({jogo["times"]}) registrada! Aguardando resultado...")
    resultado = random.choice(RESULTADOS)
    times = jogo["times"].split("vs")
    tempo = random.randint(2, 8)
    await asyncio.sleep(tempo)
    if resultado == "Vitória do Time A":
        time = times[0]
        futuro.set_result(f"Aposta no jogo {jogo["id"]} definida: Vitória do {time} (após {tempo}s).")
    elif resultado == "Vitória do Time B":
        time = times[1]
        futuro.set_result(f"Aposta no jogo {jogo["id"]} definida: Vitória do {time} (após {tempo}s).")
    else:
        futuro.set_result(f"Aposta no jogo {jogo["id"]} definida: Empate (após {tempo}s).")

async def main():
    jogos = [
        {"id": 1, "times": "Flamengo vs Palmeiras"},
        {"id": 2, "times": "São Paulo vs Corinthians"},
        {"id": 3, "times": "Grêmio vs Internacional"},
    ]

    RESULTADOS = ["Vitória do Time A", "Vitória do Time B", "Empate"]

    futuro1 = asyncio.Future()
    futuro2 = asyncio.Future()
    futuro3 = asyncio.Future()

    asyncio.create_task(aposta(jogos[0], RESULTADOS, futuro1))
    asyncio.create_task(aposta(jogos[1], RESULTADOS, futuro2))
    asyncio.create_task(aposta(jogos[2], RESULTADOS, futuro3))

    pendentes = {futuro1, futuro2, futuro3}
    while pendentes:
        done, pendentes = await asyncio.wait(pendentes, return_when=asyncio.FIRST_COMPLETED)
        for future in done:
            print(future.result())

    print()
    print("Todos os resultados foram revelados!")

asyncio.run(main())

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, Maurício! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de funções assíncronas com asyncio para simular apostas em jogos de forma eficiente, utilizou muito bem o asyncio.wait para tratar múltiplas tarefas concorrentes e ainda compreendeu a importância do Future para sincronizar resultados assíncronos.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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