1
resposta

Sugestão para uso do break

Segue abaixo a solução que eu criei.

def jogar_f():
    from time import sleep

    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    palavra_secreta = "banana".upper()
    letras_acertadas = ["_", "_", "_", "_", "_", "_"]
    enforcou = False
    acertou = False
    erros = 0
    tentativas = len(palavra_secreta) # número de tentativas máximo é o número de letras da palavra

    print()
    sleep(0.3)
    print(letras_acertadas)

    while not enforcou and not acertou:
        chute = input('Qual letra? ').strip().upper()

        if chute in palavra_secreta:  # se o jogador acertou uma letra dentro da palavra
            index = 0
            for letra in palavra_secreta:
                if chute == letra:
                    letras_acertadas[index] = letra
                index += 1
        else:  # se o jogador errou
            tentativas -= 1 # se ele errar, ele perde uma tentativa
            erros += 1
            if tentativas > 0:
                print(f'Você ainda tem {tentativas} tentativas.')
                # mostra para o jogador, quantas tentativas ele ainda tem.

        print()

        enforcou = erros == len(palavra_secreta)
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)

        #  solução utilizando o break:

        if erros == len(palavra_secreta):
            print(f'Você perdeu! A palavra correta era {palavra_secreta}.')
            break
        elif "_" not in letras_acertadas:
            print('Você ganhou!')
            break

    print()
    sleep(0.3)
    print("Fim do jogo")


if __name__ == "__main__":
    jogar_f()
1 resposta

Olá Beatriz! 🙂

Desculpe novamente o atraso no retorno.

No exemplo da aula, o uso das variáveis enforcou e acertou como parâmetro do while foi feito para indicar, já em seu inicio, uma condição para o loop continuar. Na hipótese de utilizarmos o break, não se faz mais necessário a presença dos parâmetros condicionais juntos ao while, uma vez que eles podem ser estabelecidos ao decorrer do loop com o própio break.

Observe o exemplo simples de uma contagem de 0 à 10:

Loop While com Parâmentros no Inicio (Como feito na aula)

contador = 0

while contador <= 10:

    print(contador)
    contador += 1

Nesse exemplo, o loop irá continuar enquanto o parâmetro condicional contador <= 10 for válido.

Loop While com o Uso do Break

contador = 0

while True:

    print(contador)
    contador += 1

    if contador > 10:
        break

Nesse exemplo, eu estabeleço o loop while como infinito passando o parâmentro True como condição para a repetição. Para que o o loop seja finalizado eu crio uma condição com if dentro do while , que, caso verdadeira, faz o uso do break e termina com o loop.

 

A utilização conjunta dos dois casos torna o código redundânte, por isso, é uma boa prática a escolha de apenas uma dessas maneira de se fazer o loop while.

No caso do seu código, existe tanto o parâmetro condicional do while em seu inicio, como a presença de um if com o break no final.

Espero ter ajudado! Quaisquer dúvidas, estou à disposição. 😉