Python e Programação
Faça um script em Python que exiba todos os possíveis palpites da Mega-Sena.Dados:
- Cada palpite possui 6 dezenas
- As dezenas variam de 1 até 60
- 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.
acredito que o range deve ser (1,61), pois não há dezena "00".
ResponderExcluirSim, no seu caso ele vai de 1 até 60.
ExcluirSe fizer range(60) direto, ele vai fazer de 0 até 59.
Dá no mesmo.
Exatamente isso!
ExcluirVocê tem código para palpites do jogo do bicho
Excluirfrom itertools import combinations
ResponderExcluirallcombs = combinations(range(1,61), 6)
for palpite in allcombs:
print(palpite)
como escreveria usando função
ResponderExcluir"""
ResponderExcluirPrograma 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())
def sorteio():
ResponderExcluirresultado = 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.
Como colocar um limitador em cada dezena nesse script acima ex:
ResponderExcluircomeçar de 10 e ir ate 30 na primeira dezena e assim sucessivamente?
Como colocar um limitador em cada dezena Ex:
ResponderExcluirna primeira dezena de 10 a 30
na segunda de 20 a 40 e assim sucessivamente?
Queria um script para fazer desdobramentos
ResponderExcluirEscreva um programa que verifica se o apostador ganhou algum prêmio da Mega-Sena. O
ResponderExcluirprograma 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).
Melhor e mais simples
ResponderExcluirsem 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
ResponderExcluirVocês teriam alguma código para resultados do jogo do bicho
ResponderExcluirimport random
ResponderExcluirdef sorteio():
d1 = random.randint(1,60)
d2 = random.randint(1,60)
while d2 == d1:
d2 = random.randint(1,60)
d3 = random.randint(1,60)
while (d3 == d2) or (d3 == d1):
d3 = random.randint(1,60)
d4 = random.randint(1,60)
while (d4 == d3) or (d4 == d2) or (d4 == d1):
d4 = random.randint(1,60)
d5 = random.randint(1,60)
while (d5 == d4) or (d5 == d3) or (d5 == d2) or (d5 == d1):
d5 = random.randint(1,60)
d6 = random.randint(1,60)
while (d6 == d5) or (d6 == d4) or (d6 == d3) or (d6 == d2) or (d6 == d1):
d6 = random.randint(1,60)
return d1,d2,d3,d4,d5,d6
while True:
print("Gerando sorteio...")
print(sorteio())
c = input("Digite 0 para parar ou qualquer outro valor para continuar:")
if c == "0":
break
else:
continue
#Da mega sena#
ResponderExcluirimport random
i=1
while i<=6:
num=random.randrange(1,60)
print(f"0 {i} número é:",num)
i+=1