cngsm commited on
Commit
74633c6
·
verified ·
1 Parent(s): 7d70948

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -49
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
- return [
10
- [10, 24, 33, 35, 41, 46], # Concurso 2808
11
- [8, 25, 49, 52, 55, 56], # Concurso 2807
12
- [5, 11, 13, 33, 45, 46], # Concurso 2806
13
- [1, 6, 24, 47, 55, 58], # Concurso 2805
14
- [14, 24, 25, 31, 33, 60], # Concurso 2804
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) # Adiciona o novo sorteio no início da lista
39
- return resultados[:15] # Mantém apenas os últimos 15 concursos
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
- frequentes_escolhidos = random.sample(mais_frequentes, min(3, quantidade_numeros))
70
- restantes = random.sample(atrasados, quantidade_numeros - len(frequentes_escolhidos))
71
- palpite = frequentes_escolhidos + restantes
 
 
 
 
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
- palpite = [random.randint(*faixa) for faixa in faixas]
76
- random.shuffle(palpite)
77
- palpite = palpite[:quantidade_numeros]
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(novos_numeros, quantidade_numeros, quantidade_palpites, logica):
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):")