Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

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.

16 comentários:

  1. acredito que o range deve ser (1,61), pois não há dezena "00".

    ResponderExcluir
    Respostas
    1. Sim, no seu caso ele vai de 1 até 60.
      Se fizer range(60) direto, ele vai fazer de 0 até 59.

      Dá no mesmo.

      Excluir
    2. Você tem código para palpites do jogo do bicho

      Excluir
  2. from itertools import combinations

    allcombs = combinations(range(1,61), 6)

    for palpite in allcombs:
    print(palpite)

    ResponderExcluir
  3. como escreveria usando função

    ResponderExcluir
  4. """
    Programa criado para sortear 15 números entre 1 e 25 (Loto Fácil)
    """


    import random as r


    lista_sorteado = []


    def lotofacil():
    for i in range(1, 16):
    numero_sorteado = r.randrange(1, 26)
    while numero_sorteado in lista_sorteado:
    numero_sorteado = r.randrange(1, 26)
    if numero_sorteado not in lista_sorteado:
    lista_sorteado.append(numero_sorteado)
    lista_sorteado.sort()
    return lista_sorteado

    print(lotofacil())

    ResponderExcluir
  5. Programa criado para sortear jogos da megasena:
    from random import sample
    jogos = int(input('Digite o número jogos quer fazer? '))
    for n in range(jogos):
    print(f'\nJOGO{n+1} - ',end='')
    for jogo in sorted(sample(range(1,61),6)):
    print(jogo,end=' ' )

    ResponderExcluir
  6. def sorteio():
    resultado = set()
    while len(resultado) < 6:
    # resultado.add(secrets.choice(range(1, 61)))
    resultado.add(randrange(1, 61, 1))
    return set(resultado)

    Da pra usar um set para os numeros, pois set nao aceita
    elemento repetido, assim é só repetir até dar 6 itens no set.

    ResponderExcluir
  7. Como colocar um limitador em cada dezena nesse script acima ex:

    começar de 10 e ir ate 30 na primeira dezena e assim sucessivamente?

    ResponderExcluir
  8. Como colocar um limitador em cada dezena Ex:
    na primeira dezena de 10 a 30
    na segunda de 20 a 40 e assim sucessivamente?

    ResponderExcluir
  9. Escreva um programa que verifica se o apostador ganhou algum prêmio da Mega-Sena. O
    programa recebe em uma linha os 6 números sorteados e nas linhas seguintes uma sequência de
    números até chegar em uma linha com o texto “FIM”. Esta sequência de números corresponde
    à aposta. Na saída o programa imprime qual prêmio o apostador ganhou, que pode ser SENA
    (para seis acertos), QUINA (para cinco acertos), QUADRA (para quatro acertos) e NENHUM
    (para três acertos ou menos).

    ResponderExcluir
  10. sem maldade como que chega nessa lógica sozinho?? Pesquisar e achar pode até dar mas o negócio mesmo é ter a mente treinada pra pensar nesse tipo de solução kkkkk

    ResponderExcluir
  11. Vocês teriam alguma código para resultados do jogo do bicho

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo