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

Problema de lógica, me ajude a encontrar o erro.

Olá, Não estou achando o erro lógico que esta fazendo meu código não funcionar como deveria, alguém poderia me ajudar?

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

numero_secreto = 42

chute = int(input("Digite o seu número: "))
acertou = (chute == numero_secreto)
maior = (chute > numero_secreto)
menor = (chute < numero_secreto)

print("Você digitou ", chute)

while(numero_secreto != chute):
    if(maior):
        print("Errou, chutou alto!")
        chute = int(input("Tente novamente: "))
    elif(menor):
        print("Errou, chutou baixo!")
        chute = int(input("Tente novamente: "))

if(acertou):
    print("Você acertou! Parabéns")

Ele deveria receber o input do usuário, se o input for diferente do numero secreto ele deveria rodar o WHILE, printando as mensagens correspondentes a maior ou menor, e pedindo uma nova entrada. Se o usuário tiver acertado ele pula o WHILE e printa Você acertou, parabéns.

*********************************
Bem vindo ao jogo de Adivinhação!
*********************************
Digite o seu número: 10
Você digitou  10    
Errou, chutou baixo!
Tente novamente: 50 
Errou, chutou alto!
Tente novamente: 42 
Você acertou! Parabéns

Pois bem, o que acontece na pratica é o seguinte: se o primeiro input do usuário estiver errado ele faz a comparação de maior ou menor e realmente mostra a mensagem correta e solicita novo input. Mas ele não mais compara esse input com os IFs do WHILE, repedindo a mensagem anterior em caso de erro, ou terminando o loop sem mensagem nenhuma em caso de acerto.

*********************************
Bem vindo ao jogo de Adivinhação!
*********************************
Digite o seu número: 10
Você digitou  10    
Errou, chutou baixo!
Tente novamente: 50 
Errou, chutou baixo!
Tente novamente: 42
2 respostas
solução!
Removido a pedido do usuario.

Obrigado Gerson