Oi Alisson! Tudo bem com você?
O laço vai repetir todo aquele código que está "dentro" dele, enquanto a varável rodada for menor ou igual a total_de_tentativas. E nós precisamos que ele também repita aquelas condições, para que o usuário tenha mais de uma tentativa e que em todas as tentativas, os novos números sejam devidamente comparados com o número secreto. Ou seja, essas condições devem ficar dentro do laço, porque elas irão variar de acordo com a resposta do usuário. Observe:
No caso do laço utilizado no código da aula:
total_de_tentativas = 3
rodada = 1
while (rodada <= total_de_tentativas):
print("Tentativa", rodada, "de", total_de_tentativas)
chute_str = input("Digite o seu número: ")
print("Você digitou: ", chute_str)
chute = int(chute_str)
acertou = numero_secreto == chute
maior = chute > numero_secreto
menor = chute < numero_secreto
if (acertou):
print("Você acertou!")
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.")
rodada = rodada + 1
print("Fim do jogo")
A nossa intenção é dar ao usuário 3 tentativas para tentar acertar o número secreto, certo?
Para que possamos fazer isso, criamos o laço while o qual vai permitir que o usuário tente acertar o valor 3 vezes. Por isso a linha chute_str = input("Digite o seu número: ")
deve ficar dentro do laço, para solicitar que o usuário digite um número novo a cada tentativa.
Agora, vamos pensar, se a cada tentativa o usuário poderá digitar um novo valor, então isso quer dizer que a cada tentativa os valores das variáveis acertou, maior e menor serão diferentes, concorda? Uma vez que elas são resultados de comparações do número secreto com o chute do usuário.
Por exemplo, suponhamos que ele digite o número 30:
numero_secreto = 42
# usuário digitou o número 30
# acertou vai ser False, porque o chute (30) não foi igual a 42
acertou = chute == numero_secreto
# maior vai ser False, porque o chute (30) não é maior que 42
maior = chute > numero_secreto
# menor vai ser True, porque o chute (30) é menor que 42
menor = chute < numero_secreto
E essa mesma análise deve ser feita para cada número novo que o usuário digitar, ou seja, essa análise deve ser feita a cada nova tentativa, e por isso é necessário que essas condições fiquem dentro do laço while, porque elas irão permitir que o usuário tente mais de uma vez e que a cada nova tentativa ocorra essa comparação para ver se ele acertou o número.
Qualquer dúvida a gente vai se falando por aqui, tá bom?
Espero ter ajudado.
Bons estudos!