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

Código gera loop em tentativa

Olá!

Escrevi o código do jogo "Adivinhação" e nas tentativas, começa certinho com 3 tentativas, mas quando vai para a segunda, permanece nela indefinidamente.

Códio segue abaixo (não fiz "ipsis litteris" como instruiu o Nico, pois me permiti mudar algumas coisas, mas nada exagerado, só o nome dos valores mesmo):

numero_secreto = 26
tentativas = 3

while tentativas > 0:
    print("Tentativas",tentativas)
    chute = int(input("Digite o seu palpite: "))
    numero_secreto = 26
    tentativas = 3
    if numero_secreto == chute:
        print ("Parabéns! Você acertou!")
    else:
        if (chute > numero_secreto):
            print ("Não foi dessa vez: seu chute foi MAIOR que o número secreto...")
        elif (chute < numero_secreto):
            print ("Não foi dessa vez: seu chute foi MENOR que o número secreto...")
    tentativas=tentativas -1
Agradeço a atenção.
5 respostas

Tentei colocar as linhas certinhas, mas sem sucesso. Aqui vai o print do código que fiz no Bloco de Notas

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

solução!

Oi, Nicholas! Tudo bom?

Acredito que seja a posição da variável "tentativa", veja:

Você a colocou no início do código como 3:

n_secreto = 26
tentativas = 3

Depois, colocou dentro do looping

while tentativas > 0:
    print(f"tentativas: {tentativas}")
    chute = int(input("palpite "))
    n_secreto = 26
    tentativas = 3

O programa vai ler tudo e subtrair um de "tentativa", certo? Porém, quando ele volta para o laço, lá está a variável tentativa valendo 3 novamente e gerando um looping infinito, porque 2 sempre será maior que zero. A própria saída reflete:

#Saída
tentativas: 2
palpite 2
seu chute foi menor
tentativas: 2
palpite 3
seu chute foi menor

No Pycharm, o código funcionou dessa maneira:

n_secreto = 26
tentativas = 3

while tentativas > 0:
    print(f"tentativas: {tentativas}")
    chute = int(input("palpite "))
    if n_secreto == chute:
        print("acertou")
        break
    else:
        if chute > n_secreto:
            print("maior")
        elif chute < n_secreto:
            print("menor")
    tentativas = tentativas - 1

Obs: coloquei o "break" para que o código pare a execução quando o jogador acerta o número secreto

Espero ter ajudado! Nesse caso, por favor, marque o tópico como solucionado. Valeu :D

Oi Ana, tudo bem?

Grato pela atenção dispendida.

Resumindo: eu retiro do código a linha 8 em que está escrito "tentativas=3"? (para efeito de contagem das linhas, eu desconsiderei as de introdução ao jogo, as linhas de asteriscos: comecei contar do numero_secreto=26).

Atenciosamente

Oi Ana!

É isso mesmo que eu falei no meu post anterior. Só removi a linha e deu certo rsrsrsrsrs

Abraços

Tudo certo e você?

Isso! É só tirar "tentativas = 3" do laço.

Que bom que deu certo :D

Bons estudos ^^