Advertisement
Rnery

Mega Sena..

Dec 27th, 2023 (edited)
1,488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.84 KB | Source Code | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. from requests import get
  5. from pandas import DataFrame as pd
  6. from random import choices
  7. from tqdm import tqdm
  8. import urllib3
  9.  
  10. urllib3.disable_warnings()
  11.  
  12. BASE_URL = 'https://servicebus2.caixa.gov.br/portaldeloterias/api/megasena/'
  13. HEADERS = {"Content-Type": "application/json"}
  14.  
  15.  
  16. def fetch_data(url):
  17.     response = get(url, headers=HEADERS, verify=False)
  18.     return response.json()
  19.  
  20.  
  21. def get_sorted_numbers(concurso):
  22.     link = f'{BASE_URL}{concurso}'
  23.     resposta = fetch_data(link)
  24.     return sorted(resposta['dezenasSorteadasOrdemSorteio'])
  25.  
  26.  
  27. def generate_palpites(base, qtd):
  28.     palpites = set()
  29.  
  30.     while len(palpites) < qtd:
  31.         palpite = tuple(sorted(choices(base, k=6)))
  32.         palpites.add(palpite)
  33.  
  34.     return list(palpites)
  35.  
  36.  
  37. def print_results(conc_final, base, concurso_data, palpites, totalsorteado):
  38.     index = list(range(1, len(concurso_data) + 1))
  39.  
  40.     df_concurso = pd({'Concurso': concurso_data, 'Numeros Sorteados': sorteados}, index=index)
  41.  
  42.     print("\nTOTAL DE NUMEROS A SER ANALISADOS:", len(base))
  43.     print("\nBASE UTILIZADA:", sorted(base))
  44.     print("\nCONCURSOS ANALISADOS:\n", df_concurso)
  45.     print("\nPALPITES GERADOS:")
  46.  
  47.     for palpite in palpites:
  48.         print(palpite)
  49.  
  50.     print("\nQuantidade de Palpites Gerados:", len(palpites))
  51.  
  52.     print("\nPALPITES JÁ SORTEADOS:")
  53.  
  54.     for palpite_sorteado in totalsorteado:
  55.         print('Palpite já sorteado', palpite_sorteado)
  56.  
  57.     print("\nTOTAL DE PALPITES JÁ SORTEADOS:", len(totalsorteado))
  58.  
  59.     save_results_to_file(conc_final, palpites)
  60.  
  61.  
  62. def save_results_to_file(conc_final, palpites):
  63.     with open('resultados.txt', 'w') as arquivo:
  64.         arquivo.write(f"Proximo concurso  = {conc_final}\n\n")
  65.         arquivo.write('*****  PALPITES GERADOS *****\n')
  66.  
  67.         for linha in palpites:
  68.             arquivo.write(str(linha))
  69.             arquivo.write('\n')
  70.  
  71.  
  72. def main():
  73.     conc_final = fetch_data(BASE_URL)['numeroConcursoProximo']
  74.  
  75.     print("Proximo concurso  =", conc_final)
  76.     print(100 * ' ')
  77.  
  78.     qtdAnalise = int(input('Informe a quantidade de Concurso a Analisar: '))
  79.     qtdPalpite = int(input('Informe a quantidade de Palpites a Gerar: '))
  80.  
  81.     print(100 * ' ')
  82.  
  83.     print("Analisando Concurso")
  84.  
  85.     sorteados = [get_sorted_numbers(i) for i in tqdm(range(conc_final - qtdAnalise, conc_final))]
  86.  
  87.     base = sorted(set(number for sublist in sorteados for number in sublist))
  88.     concurso_data = list(range(conc_final - qtdAnalise, conc_final))
  89.  
  90.     print(100 * ' ')
  91.  
  92.     print("Gerando Palpite")
  93.  
  94.     palpites = generate_palpites(base, qtdPalpite)
  95.  
  96.     totalsorteado = [palpite for palpite in palpites if palpite in sorteados]
  97.  
  98.     print_results(conc_final, base, concurso_data, palpites, totalsorteado)
  99.  
  100.  
  101. if __name__ == "__main__":
  102.     main()
  103.  
Tags: python python3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement