2
respostas

Não imprime frase de tentativas. O programa continua rodando infinitamente sem mostrar o número de tentativas

print("******************")
print("advinhe o número")
print("******************")

numero_secreto  = 42
total_de_tentativas = 3


while (total_de_tentativas > 0):
    print("tentativa:", total_de_tentativas)
    chute_str=input("digite um número:")
    print("vc digitou o número:", chute_str)
    chute=int(chute_str)

acertou=chute==numero_secreto
maior=chute>numero_secreto
menor=chute<numero_secreto

if(acertou):
    print("acertou")
else:
    if(maior):
        print("errou pra mais")
    elif(menor):
        print("errou pra menos")

total_de_tentativas = total_de_tentativas - 1
2 respostas

Olá Eduardo, tudo bem com você?

O jogo está executando infinitamente devido ao código responsável por avaliar a entrada do usuário e remover 1 da total_de_tentativas restante está fora do laço while. Assim o laço sempre permanece como True executando sem parar.

Para colocar esse bloco de código dentro do laço while será necessário realizar uma mudança na indentação (espaços) do código. Para isso basta seguir os passos abaixo.

  • Selecione da linha acertou=chute==numero_secreto até a última linha do código: total_de_tentativas = total_de_tentativas - 1.
  • Com as linhas selecionadas, pressione TAB uma vez. Será adicionado os espaços, assim esse bloco de código ficará dentro do laço while.
  • Salve o arquivo e execute-o.

Código completo com a mudança aplicada

print("******************")
print("advinhe o número")
print("******************")

numero_secreto = 42
total_de_tentativas = 3

while (total_de_tentativas > 0):
    print("tentativa:", total_de_tentativas)
    chute_str = input("digite um número:")
    print("vc digitou o número:", chute_str)
    chute = int(chute_str)

    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    if (acertou):
        print("acertou")
    else:
        if (maior):
            print("errou pra mais")
        elif (menor):
            print("errou pra menos")

    total_de_tentativas = total_de_tentativas - 1

Para aprimorar ainda mais o seu aprendizado sobre indentação e sua importância na linguagem Python, recomendo a leitura do seguinte artigo:

O conteúdo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas não se preocupe, caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.

Lembre-se que pode contar sempre com o fórum Alura, seja para tirar suas dúvidas, compartilhar seu desenvolvimento e dicas.

Espero ter lhe ajudado. Fico à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Copiei o código acima, mas o resultado permanece o mesmo. Roda sem parar e não imprime o número de tentativas. O resultado é esse:

******************
advinhe o número
******************
digite um número:5
vc digitou o número: 5
digite um número:4
vc digitou o número: 4
digite um número:3
vc digitou o número: 3
digite um número:

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