6
respostas

Continue não está funcionando com WHILE, mas com FOR sim

print("********************************")
print("Bem Vindo ao jogo de advinhação!")
print("********************************")

numero_secreto = 42
tentativas = 3
rodada = 1

while (rodada <= tentativas):

    print('Tentativa {} de {}.'.format(rodada, tentativas))
    chute = int(input("Digite um número entre 1 e 100:"))
    print("Você digitou:", chute)

    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 que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor que o número secreto.")
rodada = rodada + 1
print("Fim de jogo!")

O problema é que sempre aparece:


Bem Vindo ao jogo de advinhação!


Tentativa 1 de 3. Digite um número entre 1 e 100: 0 Você digitou: 0 Você deve digitar um número entre 1 e 100! Tentativa 1 de 3. >>>>> Sempre repete 1 de 3, no caso deveria ser 2 de 3

Digite um número entre 1 e 100:

6 respostas

Primeiro ponto: seu continue está dentro do if (chute < 1 or chute > 100): então, quando o chute é um número fora do intervalo será desconsiderado.

Segundo ponto: rodada = rodada + 1 está fora do bloco do while, por isso o contador de rodadas não está sendo incrementado.

Show, entendi os pontos, muito obrigado. Ainda confuso demais com as identações do Python, mas to pegando!! Valeu!

Identação é a alma do Python. Os blocos de código, que outras linguagens possuem, no python é gerenciado pela identação. Então, tem que identar tudo certinho pro código funcionar.

Como deveria ficar pra dar certo com o while ?

Boa tarde Mário

Fiz dessa forma com o While, ajustanto a identação:

`import random

print("********************************")
print("Bem Vindo ao jogo de advinhação!")
print("********************************")

numero_secreto = random.randrange(1, 101)
tentativas = 3
rodada = 1

while (rodada <= tentativas):

    print('Tentativa {} de {}.'.format(rodada, tentativas))
    chute = int(input("Digite um número entre 1 e 100:"))
    print("Você digitou:", chute)

    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ê ace1rtou!")
        break
    else:
        if(maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif(menor):
            print("Você errou! O seu chute foi menor que o número secreto.")

        rodada = rodada + 1
print("Fim de jogo!")`

Boa noite Felipe !

Acredito que para o contador da "rodada" funcionar, ele deva ser colocado no primeiro bloco do while, logo após o chute, para que sempre seja incrementado sem depender de nenhuma outra condição.

while (rodada <= tentativas):

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