Update app.py
Browse files
app.py
CHANGED
|
@@ -1,55 +1,32 @@
|
|
| 1 |
import random
|
| 2 |
import gradio as gr
|
|
|
|
|
|
|
| 3 |
|
| 4 |
-
# Base de dados inicial com os últimos 15 sorteios
|
| 5 |
def obter_resultados():
|
| 6 |
"""
|
| 7 |
-
Retorna os números dos últimos 15 concursos armazenados.
|
| 8 |
"""
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
[1, 20, 32, 43, 57, 59], # Concurso 2803
|
| 16 |
-
[17, 21, 26, 28, 32, 60], # Concurso 2802
|
| 17 |
-
[25, 27, 33, 46, 48, 56], # Concurso 2801
|
| 18 |
-
[1, 13, 19, 46, 50, 57], # Concurso 2800
|
| 19 |
-
[1, 31, 38, 40, 45, 60], # Concurso 2799
|
| 20 |
-
[3, 9, 18, 54, 59, 60], # Concurso 2798
|
| 21 |
-
[1, 3, 15, 25, 45, 52], # Concurso 2797
|
| 22 |
-
]
|
| 23 |
|
| 24 |
def atualizar_resultados(novos_numeros, resultados):
|
| 25 |
"""
|
| 26 |
Atualiza a base de dados com os novos números do sorteio,
|
| 27 |
mantendo sempre os últimos 15 concursos.
|
| 28 |
-
|
| 29 |
-
Args:
|
| 30 |
-
novos_numeros (list): Números do novo sorteio.
|
| 31 |
-
resultados (list): Lista atual dos resultados armazenados.
|
| 32 |
-
|
| 33 |
-
Returns:
|
| 34 |
-
list: Base de dados atualizada.
|
| 35 |
"""
|
| 36 |
if len(novos_numeros) != 6 or any(n < 1 or n > 60 for n in novos_numeros):
|
| 37 |
raise ValueError("Os números do sorteio devem ser uma lista de 6 números entre 1 e 60.")
|
| 38 |
-
resultados.insert(0, novos_numeros)
|
| 39 |
-
return resultados[:15]
|
| 40 |
|
| 41 |
def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica):
|
| 42 |
"""
|
| 43 |
Gera palpites para a Mega-Sena com base na lógica escolhida.
|
| 44 |
-
|
| 45 |
-
Args:
|
| 46 |
-
resultados (list): Lista de resultados dos últimos 15 concursos.
|
| 47 |
-
quantidade_numeros (int): Quantidade de números por palpite (6, 7, 8 ou 9).
|
| 48 |
-
quantidade_palpites (int): Quantidade de palpites a serem gerados.
|
| 49 |
-
logica (int): Lógica a ser usada (3 ou 4).
|
| 50 |
-
|
| 51 |
-
Returns:
|
| 52 |
-
list: Lista de palpites gerados.
|
| 53 |
"""
|
| 54 |
palpites = []
|
| 55 |
todos_os_numeros = list(range(1, 61))
|
|
@@ -65,16 +42,22 @@ def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica):
|
|
| 65 |
atrasados = [n for n in todos_os_numeros if frequencias[n] == 0]
|
| 66 |
|
| 67 |
for _ in range(quantidade_palpites):
|
|
|
|
|
|
|
| 68 |
if logica == 3: # Lógica Frequentes + Atrasados
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
elif logica == 4: # Lógica Alternância Estratégica
|
| 74 |
faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)]
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
|
| 79 |
else:
|
| 80 |
raise ValueError("Lógica inválida. Escolha entre 3 (Frequentes + Atrasados) ou 4 (Alternância Estratégica).")
|
|
@@ -83,16 +66,9 @@ def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica):
|
|
| 83 |
|
| 84 |
return palpites
|
| 85 |
|
| 86 |
-
def interface(
|
| 87 |
try:
|
| 88 |
resultados = obter_resultados()
|
| 89 |
-
|
| 90 |
-
# Atualiza os resultados se novos números forem fornecidos
|
| 91 |
-
if novos_numeros:
|
| 92 |
-
numeros = list(map(int, novos_numeros.split(",")))
|
| 93 |
-
resultados = atualizar_resultados(numeros, resultados)
|
| 94 |
-
|
| 95 |
-
# Gera os palpites
|
| 96 |
palpites = gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica)
|
| 97 |
return "\n".join([f"Palpite {i+1}: {p}" for i, p in enumerate(palpites)])
|
| 98 |
except Exception as e:
|
|
@@ -102,7 +78,6 @@ def interface(novos_numeros, quantidade_numeros, quantidade_palpites, logica):
|
|
| 102 |
demo = gr.Interface(
|
| 103 |
fn=interface,
|
| 104 |
inputs=[
|
| 105 |
-
gr.Textbox(label="Inserir o último resultado da Mega-Sena (separados por vírgula, opcional):"),
|
| 106 |
gr.Slider(6, 9, step=1, label="Quantos números por palpite?"),
|
| 107 |
gr.Slider(1, 10, step=1, label="Quantos palpites deseja gerar?"),
|
| 108 |
gr.Radio([3, 4], label="Escolha a lógica (3 - Frequentes + Atrasados, 4 - Alternância Estratégica):")
|
|
|
|
| 1 |
import random
|
| 2 |
import gradio as gr
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
|
|
|
|
| 6 |
def obter_resultados():
|
| 7 |
"""
|
| 8 |
+
Retorna os números dos últimos 15 concursos armazenados em um arquivo JSON.
|
| 9 |
"""
|
| 10 |
+
arquivo_json = "resultados.json" # Nome do arquivo JSON
|
| 11 |
+
if os.path.exists(arquivo_json):
|
| 12 |
+
with open(arquivo_json, "r") as file:
|
| 13 |
+
return json.load(file)
|
| 14 |
+
else:
|
| 15 |
+
raise FileNotFoundError(f"O arquivo '{arquivo_json}' não foi encontrado.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
def atualizar_resultados(novos_numeros, resultados):
|
| 18 |
"""
|
| 19 |
Atualiza a base de dados com os novos números do sorteio,
|
| 20 |
mantendo sempre os últimos 15 concursos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
"""
|
| 22 |
if len(novos_numeros) != 6 or any(n < 1 or n > 60 for n in novos_numeros):
|
| 23 |
raise ValueError("Os números do sorteio devem ser uma lista de 6 números entre 1 e 60.")
|
| 24 |
+
resultados.insert(0, novos_numeros)
|
| 25 |
+
return resultados[:15]
|
| 26 |
|
| 27 |
def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica):
|
| 28 |
"""
|
| 29 |
Gera palpites para a Mega-Sena com base na lógica escolhida.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
"""
|
| 31 |
palpites = []
|
| 32 |
todos_os_numeros = list(range(1, 61))
|
|
|
|
| 42 |
atrasados = [n for n in todos_os_numeros if frequencias[n] == 0]
|
| 43 |
|
| 44 |
for _ in range(quantidade_palpites):
|
| 45 |
+
palpite = set() # Usar um conjunto para evitar repetições
|
| 46 |
+
|
| 47 |
if logica == 3: # Lógica Frequentes + Atrasados
|
| 48 |
+
while len(palpite) < quantidade_numeros:
|
| 49 |
+
# Adicionar números frequentes
|
| 50 |
+
if len(palpite) < min(3, quantidade_numeros):
|
| 51 |
+
palpite.add(random.choice(mais_frequentes))
|
| 52 |
+
# Adicionar números atrasados ou gerais para completar
|
| 53 |
+
else:
|
| 54 |
+
palpite.add(random.choice(atrasados if atrasados else todos_os_numeros))
|
| 55 |
|
| 56 |
elif logica == 4: # Lógica Alternância Estratégica
|
| 57 |
faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)]
|
| 58 |
+
while len(palpite) < quantidade_numeros:
|
| 59 |
+
faixa = random.choice(faixas)
|
| 60 |
+
palpite.add(random.randint(*faixa))
|
| 61 |
|
| 62 |
else:
|
| 63 |
raise ValueError("Lógica inválida. Escolha entre 3 (Frequentes + Atrasados) ou 4 (Alternância Estratégica).")
|
|
|
|
| 66 |
|
| 67 |
return palpites
|
| 68 |
|
| 69 |
+
def interface(quantidade_numeros, quantidade_palpites, logica):
|
| 70 |
try:
|
| 71 |
resultados = obter_resultados()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
palpites = gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica)
|
| 73 |
return "\n".join([f"Palpite {i+1}: {p}" for i, p in enumerate(palpites)])
|
| 74 |
except Exception as e:
|
|
|
|
| 78 |
demo = gr.Interface(
|
| 79 |
fn=interface,
|
| 80 |
inputs=[
|
|
|
|
| 81 |
gr.Slider(6, 9, step=1, label="Quantos números por palpite?"),
|
| 82 |
gr.Slider(1, 10, step=1, label="Quantos palpites deseja gerar?"),
|
| 83 |
gr.Radio([3, 4], label="Escolha a lógica (3 - Frequentes + Atrasados, 4 - Alternância Estratégica):")
|