Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Loop While não consome uma tentativa

Opa gente, tudo certo?

Tenho uma dúvida, queria saber o porque do código com while não está consumindo uma tentativa, ele está da seguinte forma :

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

numero_sorteado = 99
tentativas = 4
rodada = 1

while (rodada <= tentativas):
    
# .format : se chama String interpolation, que é um recurso para alterar algo dentro de uma String.     

    print("\nTentativa {} de {}".format(rodada, tentativas))  
    chute = int(input("Digite um chute entre 1 e 100 : ",))
    
    
    if(chute < 1 or chute > 100):
        print("\nVocê digitou um número inválido!")
        continue
    
#a várivale 'acertou' é do tipo bool, que pode ter apenas dois valores, true ou false.   
    
    acertou = chute == numero_sorteado
    maior = chute > numero_sorteado
    menor = chute < numero_sorteado

#os dois pontos ':' serve para indicar que caso a condição for true, os blocos abaixo do if, serão executados. Mesmo se aplica para o else.
#os : serve também para iniciar o if ou o else.    
    
    if (acertou):
        print("\nParabéns! Você acertou!")
        break
    else:
        if (maior):
            print("\nSeu chute foi maior que o número sorteado!")
            print("\nQue pena! Você errou!")
        elif (menor):
            print("\nSeu chute foi menor que o número sorteado!")
            print("\nQue pena! Você errou!")
 
    rodada += + 1

no console está assim :

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Com o for deu certo :

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O código está assim :

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

numero_sorteado = 99
tentativas = 4
#rodada = 1

for rodada in range (1, tentativas + 1):
    
# .format : se chama String interpolation, que é um recurso para alterar algo dentro de uma String.     

    print("\nTentativa {} de {}".format(rodada, tentativas))  
    chute = int(input("Digite um chute entre 1 e 100 : ",))
    
    
    if(chute < 1 or chute > 100):
        print("\nVocê digitou um número inválido!")
        continue
    
#a várivale 'acertou' é do tipo bool, que pode ter apenas dois valores, true ou false.   
    
    acertou = chute == numero_sorteado
    maior = chute > numero_sorteado
    menor = chute < numero_sorteado

#os dois pontos ':' serve para indicar que caso a condição for true, os blocos abaixo do if, serão executados. Mesmo se aplica para o else.
#os : serve também para iniciar o if ou o else.    
    
    if (acertou):
        print("\nParabéns! Você acertou!")
        break
    else:
        if (maior):
            print("\nSeu chute foi maior que o número sorteado!")
            print("\nQue pena! Você errou!")
        elif (menor):
            print("\nSeu chute foi menor que o número sorteado!")
            print("\nQue pena! Você errou!")
2 respostas
solução!

Gabriel bom dia!

Eu executei seu código e funcionou corretamente para mim, verifique se você está rodando o arquivo correto.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Opa Carlos! Vou verificar, valeu!!

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