2
respostas

Como usar o for em mais de uma alternativa de entrada do while?

No exemplo, até a atividade anterior ao for, meu código estava assim: print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

total_de_tentativas = 3 tentativa_corrente = 0 numero_secreto = 42 acertou = False

while(total_de_tentativas > tentativa_corrente and acertou == False): tentativa_corrente = tentativa_corrente + 1 print("tentativa {} de {}.".format(tentativa_corrente, total_de_tentativas)) chute = int(input("Digite o seu número: ")) print("Você digitou: ", chute) acertou = chute == numero_secreto maior = chute > numero_secreto menor = chute < numero_secreto

if (acertou):
    if(tentativa_corrente == 1):
        print("Você acertou na primeira tentativa, parabéns!")
    else:
        print("Você acertou em", tentativa_corrente, "tentativas, parabéns!")
elif (menor):
    print("O número secreto é maior do que sua estimativa")
elif (maior):
    print("O número secreto é menor do que sua estimativa")

if(not acertou): print("Mais sorte na próxima vez!") print("Fim do jogo")

Nota-se que meu loop parava em duas condições distintas: concluída a terceira tentativa ou em caso de acerto. Nessa situação, tive dificuldade em fazer o for funcionar. Não quero que continue rodando após o acerto. Em Java se tem o comando Break, que força a saída do loop, mas em Python, como eu faço para, usando o for, sair na condição de acerto?

2 respostas

Parece que break também funciona para Python:

O novo código ficou assim e funcionou. A decisão de range (0, total_de_tentativas) poderia ser substituído por range (1, total_de_tentativas+1), mas optei por essa lógica.

print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

total_de_tentativas = 3

##tentativa_corrente = 0 numero_secreto = 42 acertou = False

for tentativa_corrente in range (0, total_de_tentativas): print("tentativa {} de {}.".format(tentativa_corrente+1, total_de_tentativas)) chute = int(input("Digite o seu número: ")) print("Você digitou: ", chute) acertou = chute == numero_secreto maior = chute > numero_secreto menor = chute < numero_secreto

if (acertou):
    if(tentativa_corrente == 0):
        print("Você acertou na primeira tentativa, parabéns!")
    else:
        print("Você acertou em {} tentativas, parabéns!".format(tentativa_corrente+1))
    break
elif (menor):
    print("O número secreto é maior do que sua estimativa")
elif (maior):
    print("O número secreto é menor do que sua estimativa")

if(not acertou): print("Mais sorte na próxima vez!") print("Fim do jogo")

Olá José! Tudo certo? Espero que sim. 🙂

Parabéns pelo seu empenho nos estudos de Python. Gostei de ver as duas variações do seu código, tanto com while quanto com for.

Continue participando aqui do fórum com suas dúvidas, sugestões ou até mesmo opiniões a respeito das diferenças entre as linguagens Java e Python.

Continue os bons estudos! Quaisquer dúvidas, estou à disposição. 😉