Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
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!

Bom dia!

Você esta colocando as variáveis fora do for, assim ele só verifica uma vez as condições, tente fazer assim:

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

chute = 0
numero_secreto = 42

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

    print("Você digitou ", chute)

    if(maior):
        print("Errou, chutou alto!")
    elif(menor):
        print("Errou, chutou baixo!")

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

Você também não definiu um limite de acerto, é uma boa dica implementar para que o loop não seja infinito em caso de erros contínuos

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓

Obrigado Gerson

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