Olá Guilherme, tudo bem com você?
Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura.
Realizei o teste do código apresentado, a lógica inicial está funcionando corretamente, buscando os valores declarados inicialmente em uma lista gerada aleatoriamente a cada tentativa. Como ocorre a geração de números aleatórios repetidos, deixo abaixo uma proposta para que não sejam gerados números repetidos.
Para que os valores gerados e salvos sejam sem repetição numérica, podemos fazer o uso do conjunto (set()
), o conjunto por padrão não salva objetos repetidos. Usando o conjunto, set
, temos que fazer o uso do método random.randint()
para gerar nossos números aleatórios.
Para que o código funcione, o laço de repetição while numeros2 <= 6:
foi substituído por while len(sorteados) < 6:
que irá verificar a quantidade de números inseridos no conjunto, caso seja menor que 6, o laço continua adicionando valores aleatórios.
Para testarmos o código, se está apresentando uma lógica funcional e resultados como esperados, podemos modificar o intervalo de números gerados, assim a probabilidade de que a sequência inicial seja gerada será maior.
Assim, realizei o teste inicial gerando números aleatórios de 1 a 6, e informei os números de 1 a 6 durante a execução do código. Para que eu pudesse ter uma certeza maior de que os valores das variáveis sorteados
e escolhidos
fossem iguais, adicionou uma impressão desses valores no momento em que a sequência fosse encontrada, ficando da seguinte forma o estrutura condicional if
.
if sorteados == escolhidos:
print("Esses são os sorteados: ", sorteados)
print("Esses são escolhidos: ", escolhidos)
print("Você acertou! Foram necessárias", tentativas, "tentativas")
Executando o código gerando um intervalo de 1 a 6 e informando valores de 1 a 6 obtemos o seguinte resultado.
Esses são os sorteados: {1, 2, 3, 4, 5, 6}
Esses são escolhidos: {1, 2, 3, 4, 5, 6}
Você acertou! Foram necessárias 1 tentativas
Note que o resultado foi conforme o esperado, agora podemos testar gerando valores de 1 a 60, obtendo o seguinte resultado.
Esses são os sorteados: {40, 10, 50, 20, 60, 30}
Esses são escolhidos: {40, 10, 50, 20, 60, 30}
Você acertou! Foram necessárias 131481645 tentativas
Concluímos que nessa loteria jogando os valores 10, 20, 30, 40, 50, 60, eu precisaria jogar 131.481.645 vezes para conseguir o prêmio. O código acima ficou em execução por 2h e 43 minutos e 18 segundos.
Código completo para comparação
import random
sorteados = set()
escolhidos = set()
numeros1 = 1
tentativas = 0
while numeros1 <= 6:
numeroEscolhido = int(input("Insira um número de 1 a 60: "))
escolhidos.add(numeroEscolhido)
numeros1 = numeros1 + 1
while sorteados != escolhidos:
print(sorteados)
sorteados.clear()
print("Foram necessário", tentativas, "tentativas")
tentativas = tentativas + 1
while len(sorteados) < 6:
numeroSorteado = random.randint(1, 60)
sorteados.add(numeroSorteado)
if sorteados == escolhidos:
print("Esses são os sorteados: ", sorteados)
print("Esses são escolhidos: ", escolhidos)
print("Você acertou! Foram necessárias", tentativas, "tentativas")
Peço que teste o proposto acima e verifique se atente às suas necessidades.
Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.
Fico à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!