Download app.py from cngsm/pptms: direct link, hf CLI and curl.
- Browser
- Download file 3.35 kB
-
https://huggingface.co/spaces/cngsm/pptms/resolve/main/app.py
- Command line
-
hf download hf://spaces/cngsm/pptms/app.py
-
curl -L -o app.py https://huggingface.co/spaces/cngsm/pptms/resolve/main/app.py
3.35 kB
| import random | |
| import gradio as gr | |
| import json | |
| import os | |
| def obter_resultados(): | |
| """ | |
| Retorna os números dos últimos 15 concursos armazenados em um arquivo JSON. | |
| """ | |
| arquivo_json = "resultados.json" # Nome do arquivo JSON | |
| if os.path.exists(arquivo_json): | |
| with open(arquivo_json, "r") as file: | |
| return json.load(file) | |
| else: | |
| raise FileNotFoundError(f"O arquivo '{arquivo_json}' não foi encontrado.") | |
| def atualizar_resultados(novos_numeros, resultados): | |
| """ | |
| Atualiza a base de dados com os novos números do sorteio, | |
| mantendo sempre os últimos 15 concursos. | |
| """ | |
| if len(novos_numeros) != 6 or any(n < 1 or n > 60 for n in novos_numeros): | |
| raise ValueError("Os números do sorteio devem ser uma lista de 6 números entre 1 e 60.") | |
| resultados.insert(0, novos_numeros) | |
| return resultados[:15] | |
| def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica): | |
| """ | |
| Gera palpites para a Mega-Sena com base na lógica escolhida. | |
| """ | |
| palpites = [] | |
| todos_os_numeros = list(range(1, 61)) | |
| # Contagem de frequências | |
| frequencias = {n: 0 for n in todos_os_numeros} | |
| for resultado in resultados: | |
| for numero in resultado: | |
| frequencias[numero] += 1 | |
| # Números frequentes e atrasados | |
| mais_frequentes = sorted(frequencias, key=frequencias.get, reverse=True)[:10] | |
| atrasados = [n for n in todos_os_numeros if frequencias[n] == 0] | |
| for _ in range(quantidade_palpites): | |
| palpite = set() # Usar um conjunto para evitar repetições | |
| if logica == 3: # Lógica Frequentes + Atrasados | |
| while len(palpite) < quantidade_numeros: | |
| # Adicionar números frequentes | |
| if len(palpite) < min(3, quantidade_numeros): | |
| palpite.add(random.choice(mais_frequentes)) | |
| # Adicionar números atrasados ou gerais para completar | |
| else: | |
| palpite.add(random.choice(atrasados if atrasados else todos_os_numeros)) | |
| elif logica == 4: # Lógica Alternância Estratégica | |
| faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)] | |
| while len(palpite) < quantidade_numeros: | |
| faixa = random.choice(faixas) | |
| palpite.add(random.randint(*faixa)) | |
| else: | |
| raise ValueError("Lógica inválida. Escolha entre 3 (Frequentes + Atrasados) ou 4 (Alternância Estratégica).") | |
| palpites.append(sorted(palpite)) | |
| return palpites | |
| def interface(quantidade_numeros, quantidade_palpites, logica): | |
| try: | |
| resultados = obter_resultados() | |
| palpites = gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica) | |
| return "\n".join([f"Palpite {i+1}: {p}" for i, p in enumerate(palpites)]) | |
| except Exception as e: | |
| return str(e) | |
| # Configuração da interface Gradio | |
| demo = gr.Interface( | |
| fn=interface, | |
| inputs=[ | |
| gr.Slider(6, 9, step=1, label="Quantos números por palpite?"), | |
| gr.Slider(1, 10, step=1, label="Quantos palpites deseja gerar?"), | |
| gr.Radio([3, 4], label="Escolha a lógica (3 - Frequentes + Atrasados, 4 - Alternância Estratégica):") | |
| ], | |
| outputs=gr.Textbox(label="Palpites Gerados") | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |