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):")
|