É preciso saber programar para conferir título de capitalização

Em primeiro lugar eu queria dizer que títulos de capitalização são a maior safadeza já inventada. É a típica parceria Caracu, onde o Banco entra com a cara.

Tendo dito isto, talvez você não saiba como é feito o sorteio dos tais prêmios. Um infeliz amigo que foi obrigado pelo seu gerente a fazer um título de capitalização pediu um help ontem e coloco abaixo a forma como resolvi.

Vamos às regras do título de capitalização do Banco Maldito (você sabe qual é):

  1. Só valem os sorteios da Loteria Federal feitos no último sábado do mês.
  2. Se o mês for Março, Junho, Setembro ou Dezembro vão ser escolhidos dois números. Um tradicional e outro especial.
  3. O número tradicional é formado pela dezena simples e unidade simples do primeiro prêmio da loteria federal e pela unidade simples do 2o, 3o, 4o e 5o prêmios da loteria federal.
  4. No caso do sorteio especial o segundo número é formado pela centena simples do primeiro prêmio da loteria federal e pela dezena simples do 1o, 2o, 3o, 4o e 5o prêmio.

Para resolver você precisa de uma tabela de resultados da loteria federal que pode ser conseguida aqui: http://www1.caixa.gov.br/loterias/loterias/federal/download.asp

Com isto em mãos e o programa em Python que vai abaixo você resolve seu problema. (obviamente os mestres de Python que leem o blog terão soluções melhores).

Mas o melhor conselho é *nunca* fazer título de capitalização.

Título de Capitalização é safadeza

#!/usr/bin/env python
import urllib
import time
import calendar
from bs4 import BeautifulSoup
 
fhtml = open("D_LOTFED.HTM").read()
soup = BeautifulSoup(fhtml)
meus_numeros = [
394465,558487,
572418,640294,
439592,329068,
368570,765895,
023206,847826]
 
l = []
for i in soup.table.tbody.findAll("tr"):
        a = []
        for k in i.findAll("td"):
                a.append(k.text)
        l.append(a)
 
def modalidadeMensal (a1):
        return int(a1[2][3:]+a1[3][4]+a1[4][4]+a1[5][4]+a1[6][4])
 
def modalidadeEspecial(a1):
        return int(a1[2][2:3]+a1[3][3]+a1[4][3]+a1[5][3]+a1[6][3])
 
def isLastSaturday(st):
        tupl = time.strptime(st,"%d/%m/%Y")
        if tupl[6]==5:
                if ((tupl[2])+7) > calendar.monthrange(tupl[0],tupl[1])[1]:
                        return True
        return False
 
def isEspecial(st):
        if (isLastSaturday(st)):
                tupl = time.strptime(st,"%d/%m/%Y")
                if tupl[1] in [3,6,9,12]:
                        return True
        return False
 
for i in l[1:]:
        if isLastSaturday(i[1]):
                print i[0],i[1],modalidadeMensal(i)
                if modalidadeMensal(i) in meus_numeros: print i
        if isEspecial(i[1]):
            print "*",i[0],i[1],%modalidadeEspecial(i)
            if modalidadeEspecial(i) in meus_numeros: print i

3 comentários em “É preciso saber programar para conferir título de capitalização”