Python - Gerar Todos os Palpites da Mega-Sena

Neste tutorial de nosso Curso de Python, vamos ensinar como criar um programa que exibe todos os palpites possíveis para se jogar na Mega-Sena.



Python e Programação

Faça um script em Python que exiba todos os possíveis palpites da Mega-Sena.
Dados:

  1. Cada palpite possui 6 dezenas
  2. As dezenas variam de 1 até 60
  3. Não pode repetir dezena

Solução:

Existem diversos estudos e pesquisas que tentam usar a programação para ajudar, de alguma maneira, as pessoas sobre como ganhar na Mega-Sena.

Antes de iniciarmos a parte da programação Python, precisamos definir algumas coisas.

Vamos usar 6 variáveis, para representar as 6 dezenas da Mega-Sena, ok?
Elas serão:
dez1 dez2 dez3 dez4 dez5 dez6

A princípio, você poderia pensar:
Só usar laço FOR dentro de laço FOR, para cada uma das dezenas, variando de 1 até 60.

Parece um raciocínio que faz sentido.
Mas temos um problema: se fizer isso, você vai criar palpites com dezenas repetidas, experimente:


O script acima tem vários e vários palpites com dezenas repetidas:
1 1 1 1 1 1
1 2 3 4 5 5
etc etc

Podemos resolver isso deixando uma coisa bem clara:
O palpite "dez1 dez2 dez3 dez4 dez5 dez6" está em ordem crescente.

Ou seja:
dez1 > dez2 > dez3 > dez4 > dez5 > dez6

Isso quer dizer algumas coisas interessantes.
Por exemplo, a última dezena vai de 6 até 60.

Não tem como a última dezena ser 5, por exemplo.
Pois teríamos o menor palpite: 1 2 3 4 5...e a última dezena tem que ser 6 pra cima.

O grande segredo para esse tipo de questões é fazer com que:
dez2 > dez1
dez3 > dez2
dez4 > dez3
dez5 > dez5
dez6 > dez5

Ou seja, para dez1, vamos deixar o intervalo como range(60).
Já para dez2, o range deve começar de modo a ser sempre maior que dez1, e isso é feito assim: range(dez1+1, 60).

A dez3 deve ser sempre maior que dez2, isso é feito usando o seguinte intervalo: range(dez2+1,60), e assim sucessivamente.

Script Que Exibe Todos os Palpites da Mega-Sena


Nosso script fica então:

for dez1 in range(60):
    for dez2 in range(dez1+1,60):
        for dez3 in range(dez2+1,60):
            for dez4 in range(dez3+1,60):
                for dez5 in range(dez4+1,60):
                    for dez6 in range(dez5+1,60):
                        print(dez1+1,dez2+1,dez3+1,dez4+1,dez5+1,dez6+1)


Se você rodar o script acima, certamente vai levar um bom tempo para ver todos os possíveis palpites, que são mais de 50 milhões.

Ao invés de exibir todos, você pode usar um contador, para contar o número de possíveis palpites, veja:

total=0
for dez1 in range(60):
    for dez2 in range(dez1+1,60):
        for dez3 in range(dez2+1,60):
            for dez4 in range(dez3+1,60):
                for dez5 in range(dez4+1,60):
                    for dez6 in range(dez5+1,60):
                        total += 1
print(total)


Entrando no site oficial da Meg-Sena:
http://loterias.caixa.gov.br/wps/portal/loterias/landing/megasena/

Lá, na seção "Probabilidade", vemos que a chance de uma pessoa ganhar é de 1 em 50.063.860

Mas, hora, esse é o número que nosso programa calculou.
Ou seja, nosso script está correto.

Nenhum comentário:

Postar um comentário