8
respostas

Jogo de adivinhação

Boa noite,

Se você digitar a resposta "-1" no "FOR", ele imprimi somente: "Você deve digitar um número entre 1 e 100!".

Já no "While" o "-1", responde: "Você deve digitar um número entre 1 e 100!" e "Você errou! O seu chute foi menor do que o número secreto."

Sendo que no "While" deveria imprimir somente: "Você deve digitar um número entre 1 e 100!".

Como resolver isso???


print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

numero_secreto = 42 total_de_tentativas = 3

for rodada in range(1, total_de_tentativas + 1): print("Tentativa {} de {}".format(rodada, total_de_tentativas)) chute_str = input("Digite um número entre 1 e 100: ") print("Você digitou ", chute_str) chute = int(chute_str)

if(chute < 1 or chute > 100):
    print("Você deve digitar um número entre 1 e 100!")
    continue

acertou = chute == numero_secreto
maior = chute > numero_secreto
menor = chute < numero_secreto

if(acertou):
    print("Você acertou!")
    break
else:
    if(maior):
        print("Você errou! O seu chute foi maior do que o número secreto.")
    elif(menor):
        print("Você errou! O seu chute foi menor do que o número secreto.")

print("Fim do jogo.")

Tentativa 1 de 3 Digite um número entre 1 e 100: -1 Você digitou -1 Você deve digitar um número entre 1 e 100! Tentativa 2 de 3 Digite um número entre 1 e 100:


print("*") print("Bem vindo no jogo de Adivinhação!") print("*")

numero_secreto = 42 total_de_tentativas = 3 rodada = 1

while(rodada <= total_de_tentativas): print("Tentativa {} de {}".format(rodada, total_de_tentativas)) chute_str = input("Digite o seu numero: ") print("Você digitou ", chute_str) chute = int(chute_str)

if(chute < 1 or chute > 100):
    print("Você deve digitar um número entre 1 e 100!")


acertou = chute == numero_secreto
maior = chute > numero_secreto
menor = chute < numero_secreto

if(acertou):
    print("Você acertou!")
    break
else:
    if(maior):
        print("Você errou! O seu chute foi maior do que o número secreto.")
    elif(menor):
        print("Você errou! O seu chute foi menor do que o número secreto.")

rodada = rodada + 1

print("Fim do jogo.")

Tentativa 1 de 3 Digite o seu numero: -1 Você digitou -1 Você deve digitar um número entre 1 e 100! Você errou! O seu chute foi menor do que o número secreto. Tentativa 2 de 3 Digite o seu numero:

8 respostas

Ficou mal formatado aqui, pelo que parece é um erro de identação, acho que o primeiro if e o segundo estão no mesmo nivel de identaçao, fazendo com que o programa faça as duas checagens. Mas tenta formatar direito pra gente ter certeza.

Assim funcionou!

print("*") 
print("Bem vindo no jogo de Adivinhação!") 
print("*")

numero_secreto = 42 
total_de_tentativas = 3 
rodada = 1

while(rodada <= total_de_tentativas): 
    print("Tentativa {} de {}".format(rodada, total_de_tentativas)) 
    chute_str = input("Digite o seu numero: ") 
    print("Você digitou ", chute_str) 
    chute = int(chute_str)

    if(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")

    else:
        acertou = chute == numero_secreto
        maior = chute > numero_secreto
        menor = chute < numero_secreto
        if(acertou):
            print("Você acertou!")
            break
        else:
            if(maior):
                print("Você errou! O seu chute foi maior do que o número secreto.")
            elif(menor):
                print("Você errou! O seu chute foi menor do que o número secreto.")

        rodada = rodada + 1

ou assim:

print("*") 
print("Bem vindo no jogo de Adivinhação!") 
print("*")

numero_secreto = 42 
total_de_tentativas = 3 
rodada = 1

while(rodada <= total_de_tentativas): 
    print("Tentativa {} de {}".format(rodada, total_de_tentativas)) 
    chute_str = input("Digite o seu numero: ") 
    print("Você digitou ", chute_str) 
    chute = int(chute_str)

    if(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")
        continue //faltou isso!

    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto
    if(acertou):
        print("Você acertou!")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor do que o número secreto.")

    rodada = rodada + 1

Marcelo, acredito que você se esqueceu de pôr o comando continue logo abaixo da linha print("Você deve digitar um número entre 1 e 100!"). Você colocou o continue no exemplo utilizando o for (e funcionou), mas não o colocou no exemplo utilizando o while.

Valeu pessoal... Depois vou dar uma olhadinha nisso.

Valeu pessoal... Depois vou dar uma olhadinha nisso.

Esses dois casos acima que você mencionaram não deram certo.

Acredito que só o For dá certo.

Ele continua repetindo as tentativas. Exemplo abaixo, as tentativas 2 de 3 passou de uma vez, que deveria ir direto para o 3.

Bem vindo no jogo de Adivinhação!


Tentativa 1 de 3 Digite o seu numero: 1 Você digitou 1 Você errou! O seu chute foi menor do que o número secreto. Tentativa 2 de 3 Digite o seu numero: -1 Você digitou -1 Você deve digitar um número entre 1 e 100! Tentativa 2 de 3 Digite o seu numero: 10000 Você digitou 10000 Você deve digitar um número entre 1 e 100! Tentativa 2 de 3 Digite o seu numero:

Se você quiser que as tentativas fora do range de 1 a 100 contem, é so ajustar o codigo, Com "continue" após o primeiro if:

print("*") 
print("Bem vindo no jogo de Adivinhação!") 
print("*")

numero_secreto = 42 
total_de_tentativas = 3 
rodada = 1

while(rodada <= total_de_tentativas): 
    print("Tentativa {} de {}".format(rodada, total_de_tentativas)) 
    chute_str = input("Digite o seu numero: ") 
    print("Você digitou ", chute_str) 
    chute = int(chute_str)
    rodada = rodada + 1
// Subi o count de rodada pra ca, pq independente do numero que ela chutar, vai adicionar um no numero de rodadas
    if(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")
        continue


    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto
    if(acertou):
        print("Você acertou!")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor do que o número secreto.")

Sem o continue após o primeiro if:

print("*") 
print("Bem vindo no jogo de Adivinhação!") 
print("*")

numero_secreto = 42 
total_de_tentativas = 3 
rodada = 1

while(rodada <= total_de_tentativas): 
    print("Tentativa {} de {}".format(rodada, total_de_tentativas)) 
    chute_str = input("Digite o seu numero: ") 
    print("Você digitou ", chute_str) 
    chute = int(chute_str)

    if(chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")

    else:
        acertou = chute == numero_secreto
        maior = chute > numero_secreto
        menor = chute < numero_secreto
        if(acertou):
            print("Você acertou!")
            break
        else:
            if(maior):
                print("Você errou! O seu chute foi maior do que o número secreto.")
            elif(menor):
                print("Você errou! O seu chute foi menor do que o número secreto.")

    rodada = rodada + 1
    //aqui desaninhei a variavel rodada do if e do else, assim ela é instanciada sempre.