Dentro do jogo, até aqui, ao digitar um chute < 1 ou > 100 o programa segue e conta como uma tentativa, do mesmo jeito.
e se eu quisesse que não fosse computado uma tentativa, numeros < 1 ou > 100, como eu poderia fazer?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Dentro do jogo, até aqui, ao digitar um chute < 1 ou > 100 o programa segue e conta como uma tentativa, do mesmo jeito.
e se eu quisesse que não fosse computado uma tentativa, numeros < 1 ou > 100, como eu poderia fazer?
Olá Idelilde,
Pesquisei aqui e não encontrei uma forma de fazer isso usando a construção "for". Uma alternativa para fazer o que você quer seria utilizar o laço com "while" conforme explicado na Aula 4. Uma sugestão seria:
total_de_tentativas = 3
rodada = 1
while(rodada <= total_de_tentativas):
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 or chute > 100):
print("Você deve digitar um número entre 1 e 100!")
else:
rodada = rodada+1Neste caso a rodada só seria considerada se o número estivesse no intervalo entre 1 e 100.
Idelilde, como vai?
O programa como está sempre conta como uma tentativa pois o comando continue dentro de uma laço for sempre vai para a próxima iteração.
Então utilizando o for como abaixo o chute <1 ou >100 será considerado como uma tentativa :
print("*********************************")
print("Bem vindo ao jogo de Adivinhação!")
print("*********************************")
numero_secreto = 42
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 or chute > 100):
print("Você deve digitar um número entre 1 e 100!")
continue
acertou = chute == numero_secreto
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 do que o número secreto.")
elif(menor):
print("Você errou! O seu chute foi menor do que o número secreto.")
print("Fim do jogo")Então se você não quiser considerar como tentativa quando se digita um valor errado a maneira mais fácil seria trocar o laço for pelo while, porém o contador de tentativas deveria ser incrementado manualmente, como segue:
print("*********************************")
print("Bem vindo ao jogo de Adivinhação!")
print("*********************************")
numero_secreto = 42
total_de_tentativas = 3
rodada = 1 # <== Acrescentado esta atribuição
while rodada <= total_de_tentativas: # <== Substituído o for pelo while
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 or chute > 100):
print("Você deve digitar um número entre 1 e 100!")
continue
rodada +=1 # <== Acrescentado esta operação
acertou = chute == numero_secreto
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 do que o número secreto.")
elif(menor):
print("Você errou! O seu chute foi menor do que o número secreto.")
print("Fim do jogo")As linhas alteradas estão identificadas com #<==
Espero ter ajudado.
entendi. Dado o continue do laço for, ele segue em frente, considerando muito Obrigado!