sena / app.py
cngsm's picture
Update app.py
341c786 verified
import random
import gradio as gr
def obter_ultimo_sorteio(input_numeros):
"""
Recebe os números do último sorteio fornecidos pelo usuário.
"""
try:
numeros = [int(x.strip()) for x in input_numeros.split(',') if x.strip().isdigit()]
if len(numeros) == 6 and all(1 <= n <= 60 for n in numeros):
return numeros
else:
raise ValueError("Informe exatamente 6 números entre 1 e 60, separados por vírgula.")
except Exception as e:
return str(e)
def gerar_palpites(ultimo_sorteio, quantidade_numeros, quantidade_palpites, logica=None):
"""
Gera palpites para a Mega-Sena com base na lógica escolhida.
Se a lógica não for informada, a lógica automática será aplicada.
"""
palpites = []
todos_os_numeros = list(range(1, 61))
# Lógica automática: Escolher lógica com base em quantidade de palpites e números por palpite
if logica is None:
if quantidade_palpites > 5:
logica = 3 # Lógica 3: Distribuição alternada se houver muitos palpites
elif quantidade_numeros > 6:
logica = 2 # Lógica 2: Combina frequentes e atrasados se a quantidade de números for maior
else:
logica = 1 # Lógica 1: Priorizar números frequentes
for _ in range(quantidade_palpites):
if logica == 1: # Lógica 1: Priorizar números frequentes
mais_frequentes = [n for n in ultimo_sorteio[:3]]
restantes = [n for n in todos_os_numeros if n not in mais_frequentes]
palpite = random.sample(mais_frequentes, min(len(mais_frequentes), quantidade_numeros)) + \
random.sample(restantes, quantidade_numeros - len(mais_frequentes))
elif logica == 2: # Lógica 2: Combinar frequentes e atrasados
frequentes = ultimo_sorteio[:3]
atrasados = [n for n in todos_os_numeros if n not in ultimo_sorteio]
palpite = random.sample(frequentes, 3) + random.sample(atrasados, quantidade_numeros - 3)
elif logica == 3: # Lógica 3: Distribuição alternada
faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)]
palpite = [random.randint(*faixa) for faixa in faixas]
random.shuffle(palpite)
palpite = palpite[:quantidade_numeros]
else:
return "Lógica inválida. Escolha entre 1, 2 ou 3."
palpites.append(sorted(palpite))
return palpites
def interface(ultimo_sorteio, quantidade_numeros, quantidade_palpites):
"""
Função que integra as partes do programa e retorna os palpites gerados com lógica automática.
"""
numeros = obter_ultimo_sorteio(ultimo_sorteio)
if isinstance(numeros, str):
return numeros # Mensagem de erro
palpites = gerar_palpites(numeros, quantidade_numeros, quantidade_palpites)
return palpites
with gr.Blocks() as app:
gr.Markdown("""
# Simulador da Mega-Sena
Escolha a quantidade de números e palpites e insira os números do último sorteio. A lógica será escolhida automaticamente.
""")
with gr.Row():
ultimo_sorteio = gr.Textbox(label="Último Sorteio (6 números separados por vírgula)")
quantidade_numeros = gr.Slider(6, 9, step=1, label="Quantidade de Números por Palpite")
quantidade_palpites = gr.Slider(1, 10, step=1, label="Quantidade de Palpites")
palpites_output = gr.Textbox(label="Palpites Gerados", interactive=False)
gerar_palpites_btn = gr.Button("Gerar Palpites")
gerar_palpites_btn.click(interface, inputs=[ultimo_sorteio, quantidade_numeros, quantidade_palpites], outputs=[palpites_output])
app.launch(share=True)