1
resposta

Resultados em um sistema de aposta

import asyncio
import random

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"]

async def processar_aposta(jogo, future):
    tempo_espera = random.randint(2, 8)
    await asyncio.sleep(tempo_espera)
    resultado = random.choice(RESULTADOS)
    future.set_result((jogo, resultado, tempo_espera))

async def revelar_resultado(future):
    jogo, resultado, tempo = await future
    time_a, time_b = jogo["times"].split(" vs ")
    if resultado == "Vitória do Time A":
        resultado_formatado = f"Vitória do {time_a}"
    elif resultado == "Vitória do Time B":
        resultado_formatado = f"Vitória do {time_b}"
    else:
        resultado_formatado = "Empate"
    print(f"Aposta no jogo {jogo['id']} definida: {resultado_formatado} (após {tempo}s).")

async def main():
    futures = []
    for jogo in jogos:
        future = asyncio.Future()
        futures.append(future)
        print(f"Aposta no jogo {jogo['id']} ({jogo['times']}) registrada! Aguardando resultado...")
        asyncio.create_task(processar_aposta(jogo, future))

    await asyncio.gather(*(revelar_resultado(f) for f in futures))
    print("\nTodos os resultados foram revelados!")

asyncio.run(main())
1 resposta

Oi, Márcia! Tudo bom?

Excelente! Siga praticando com os desafios e sempre compartilhe conosco.

Você soube aplicar o asyncio.Future para gerenciar resultados de forma eficiente, aproveitou o asyncio.create_task() para iniciar tarefas assíncronas e entendeu como o asyncio.gather() é essencial para sincronizar múltiplas operações.

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

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

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!