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?
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+1
Neste 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!