1
resposta

Jogo Senha

Obrigada pelas sugestões! Mas o código ainda não está conseguindo retornar quantos algarismos do chute pertencem ao número secreto.

O código consegue identificar quais números estão no lugar correto. Mas ainda não soma a quantidade de números do "chute" que fazem parte do número secreto, independente de estar ou não no lugar correto.

corrigindo a linha 69:       print("Você acertou {} número(s) no lugar correto.".format(numeros_certos))

(Corrigindo a linha 69 e incluindo o print informando qual o número secreto, para facilitar nossa testagem do código: print(numeros_secretos)

Veja quando rodei o código:

________________________** V A M O S J O G A R S E N H A ? ________________________**

[2, 5, 3, 5] Qual o seu palpite? Escolha quatros números de 0 a 5 => ['', '', '', '']: Primeiro número: 5 Segundo número: 3 Terceiro número: 0 Quarto número: 0 Você escolheu os números: 5300 Você acertou 2 número(s) no lugar correto. Você acertou 0 número(s) no lugar correto.

Qual o seu palpite? Escolha quatros números de 0 a 5 => ['', '', '', '']: Primeiro número: 2 Segundo número: 5 Terceiro número: 3 Quarto número: 0 Você escolheu os números: 2530 Você acertou 3 número(s) no lugar correto. Você acertou 3 número(s) no lugar correto.

Qual o seu palpite? Escolha quatros números de 0 a 5 => ['', '', '', '']: Primeiro número: 0 Segundo número: 0 Terceiro número: 2 Quarto número: 5 Você escolheu os números: 0025 Você acertou 2 número(s) no lugar correto. Você acertou 1 número(s) no lugar correto.Estou tentando corrigir o código abaixo mas não estou conseguindo. O código mostra quantos números do palpite estão no lugar correto. Porém, desejo também que diga quantos numerais do palpite constam na senha e não estou conseguindo: print("Você acertou {} número(s), ". format(numeros_repetidos))

1 resposta

Olá Carmen, tudo bem!

Vamos fazer algumas alterações no código para facilitar essa contagem, seu código modificando fica assim:

import random

print(" ")
print("*_*" * 50)
print("                                  V A M O S   J O G A R    S E N H A ?")
print("*_*" * 50)

numero_secreto1 = random.randrange(0, 6)
numero_secreto2 = random.randrange(0, 6)
numero_secreto3 = random.randrange(0, 6)
numero_secreto4 = random.randrange(0, 6)
numero_secreto = [numero_secreto1, numero_secreto2, numero_secreto3, numero_secreto4]

print(" ")
numeros_acertados = ["_", "_", "_", "_"]
acertou = False
perdeu = False
tentativas = 0

while (not acertou and not perdeu):
    print("Qual o seu palpite? Escolha quatros números de 0 a 5 => {}: ".format(numeros_acertados))

    chute_str1 = input("Primeiro número: ")
    chute_str2 = input("Segundo número: ")
    chute_str3 = input("Terceiro número: ")
    chute_str4 = input("Quarto número: ")
    chute1 = int(chute_str1)
    chute2 = int(chute_str2)
    chute3 = int(chute_str3)
    chute4 = int(chute_str4)

    chute = [chute1, chute2, chute3, chute4]

    numeros_repetidos = 0

    if chute1 in numero_secreto:
        numeros_repetidos += 1

    if chute2 in numero_secreto and chute2 != chute1:
        numeros_repetidos += 1

    if chute3 in numero_secreto and chute3 != chute1 and chute3 != chute2:
        numeros_repetidos += 1

    if chute4 in numero_secreto and chute4 != chute1 and chute4 != chute2 and chute4 != chute3:
        numeros_repetidos += 1

    print("Você escolheu os números: {}{}{}{}".format(chute_str1, chute_str2, chute_str3, chute_str4))

    print("Você acertou {} número(s) no lugar correto.".format(numeros_repetidos))
    numeros_certos = 0

    acertou1 = chute1 == numero_secreto1
    acertou2 = chute2 == numero_secreto2
    acertou3 = chute3 == numero_secreto3
    acertou4 = chute4 == numero_secreto4

    if acertou1:
        numeros_certos += 1
    if acertou2:
        numeros_certos += 1
    if acertou3:
        numeros_certos += 1
    if acertou4:
        numeros_certos += 1

    print("Você acertou {} número(s) no lugar correto.".format(numeros_certos))

    acertou = numeros_certos == 4

    if acertou:
        print("Parabéns! Você acertou o número secreto.")
        break
    else:
        print(" ")
        tentativas += 1
        perdeu = tentativas == 5

if perdeu:
    print("Você perdeu!")
print("O número secreto era: {}.".format(numero_secreto))
print("F I M   D E   J O G O !")

Em vez de usar várias variáveis para contar as ocorrências de cada dígito no palpite, utilizei um bloco de condicionais if para verificar se cada dígito do palpite do jogador e contabilizar quantos deles estão presentes na senha, mas em posições diferentes. Isso foi feito por meio da variável numeros_repetidos, que foi incrementada para cada acerto que não está na posição correta.

Mantivemos o loop for para percorrer cada dígito do palpite do jogador e verificar os acertos no lugar correto, incrementando a variável numeros_certos para cada acerto.

Ao final de cada rodada, verificamos se o jogador acertou os quatro dígitos na posição correta (se numeros_certos é igual a 4). Se isso acontecer, o jogador vence o jogo e recebe uma mensagem de parabéns. Caso contrário, verificamos se o número de tentativas chegou a 5. Se sim, o jogador perde o jogo e recebe uma mensagem informando que ele não acertou o número secreto.

Acredito que isso atenda o que você queria!

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software