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

E se eu quisesse não contar como tentativa se o numero digitado fosse < 1 ou > 100?

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?

3 respostas

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.

solução!

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!