1
resposta

[Aplicando a Projetos] - Desafio 6 - Solução Sorteador de Números

import random
import time
import emoji
from rich.progress import track

numeros = []

def main():
    while True:
        limpar_prompt()
        print("-"*15 + "Sorteador de Números" + "-"*15)
        print("1. Iniciar Sorteio")
        print("2. Sair")
        opcao = input("Escolha uma opção: ")

        if opcao == '1':
            iniciar_sorteio()
        elif opcao == '2':
            print("Saindo do programa...")
            break
        else:
            limpar_prompt()
            print("Opção inválida. Tente novamente.")
            time.sleep(1.5)

def iniciar_sorteio():
    limpar_prompt()
    numeros.clear()
    print("-"*15 + "Lista do Sorteio" + "-"*15 + "\n")
    participantes = int(input("Digite a quantidade de participantes: "))
    print()

    if participantes > 100:
        print("Erro: máximo de participantes é 100.")
        time.sleep(2)
        return

    numeros_gerados = random.sample(range(1, 101), participantes)

    print(f"{'Participantes'.rjust(15)} | {'Numeros Sorteados'.ljust(30)}")

    for i in range(participantes):
        numero_sorteado = numeros_gerados[i]
        numeros.append(numero_sorteado)
        print(f"- {str(i+1).ljust(13)} | {str(numero_sorteado).ljust(30)}")
        time.sleep(0.5)

    sorteando_vencedor()

def sorteando_vencedor():
    print("\n" + "-"*15 + "Sorteando números" + "-"*15 + "\n")
    time.sleep(1)
    barra_de_progresso()

    indice_ganhador = random.randint(0, len(numeros) - 1)
    numero_vencedor = numeros[indice_ganhador]
    ganhador_vencedor = indice_ganhador + 1

    print("-"*15 + "Resultado do Sorteio" + "-"*15 + "\n")

    resultado = (f'''
        Numero sorteado foi o n°{numero_vencedor}.
        O Ganhador foi o participante n°{ganhador_vencedor}.
        Parabéns {emoji.emojize(':balloon:'*3)}!
    ''')

    linhas = resultado.strip().split('\n')
    for linha in linhas:
        print(linha.strip())

    input("\nPressione Enter para continuar...")

def limpar_prompt():
    import os
    import platform

    if platform.system() == "Windows":
        os.system("cls")
    else:
        os.system("clear")

def barra_de_progresso():
    for _ in track(range(50), description="Carregando Vencedor...\n"):
        time.sleep(0.10)

if __name__ == "__main__":
    main()
1 resposta

Oi, Edgard! Tudo bom?

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

Você soube aplicar as funções e estrutura de repetição para controlar o fluxo do sorteador de forma eficiente, aproveitou o módulo random para gerar números de forma aleatória e entendeu como o uso da biblioteca rich é essencial para deixar a experiência mais interativa e visual.

Como dica adicional, experimente utilizar random.shuffle() quando quiser embaralhar uma lista antes de iterar. Assim:

participantes = list(range(1, 101))
random.shuffle(participantes)

A lista de participantes é embaralhada, garantindo aleatoriedade na ordem de sorteio.

Í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!