2
respostas

[Dúvida] Erro ao acertar de primeira

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

numero_secreto = 78
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):
        print("Você deve digitar um número entre 1 e 100!")
        continue

        acertou = numero_secreto == chute
        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.")
print("Fim do jogo!")

o ERRO que dá é esse Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

A variável maior não estava sendo definida, pois tinha um erro na lógica. Deveria ter um else ao invés do continue na condição que testava se o número era menor que 1.

Aproveitei e fiz pequenos ajustes no seu código.

Espero ter ajudado.

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

numero_secreto = 78
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:
        print("Você deve digitar um número entre 1 e 100!")
    else:
        acertou = numero_secreto == chute
        if acertou:
            print("Você acertou!")
            break

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

    print("Fim do jogo!")

Teve um pequeno erro de syntax, você colocou o " break " fora do " if (acertou): ", assim o "else" ficou vinculado ao " if (chute < 1): ". Então a logica era o seguinte, se chute < 1 chama o print, continue >> se o número fosse maior ele ia direto pro " else ", assim as variáveis nunca eram definidas.

Obs: primeira vez que faço isso, não sei se conseguiu entender e o código corrigido está logo a baixo.

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

numero_secreto = 78
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):
        print("Você deve digitar um número entre 1 e 100!")
        continue

        acertou = numero_secreto == chute
        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.")
print("Fim do jogo!")