3
respostas

Proposyta para alteração para usar o Break no código da Forca

def joga_forca():
    print("*********************************")
    print("** Bem vindo ao jogo de Forca! **")
    print("*********************************")

    palavra_secreta = "banana".upper()
    letras_acertadas = ["_", "_", "_", "_", "_", "_"]


    erros = 0

    print(letras_acertadas)

    while True:

        chute = input("Qual a letra? ")
        chute = chute.strip().upper()

        if chute in palavra_secreta:
            index = 0
            for letra in palavra_secreta:
                if letra == chute:
                    letras_acertadas[index] = chute
                index += 1
        else:
            erros+= 1

        print(letras_acertadas)
        if erros == 6:
            print("VOCÊ FOI ENFORCADO")
            break
        if "_" not in letras_acertadas:
            print("VOCÊ GANHOU")
            break

if __name__ == "__main__":
    joga_forca()
3 respostas

Com essa alteração proposta, pude eliminar as variáveis acertou e enforcou. O laço while vai rodar indefinidamente até ser interrompido pelas situações: jogador acertou ou jogador enforcado.

Muito legal Bruno.

Você usou corretamente o break e dessa maneira eliminou a necessidade das variáveis acertou e enforcou.

Das duas soluções, sem o break e com o break, gosto mais da primeira, por ela deixar o nosso código mais claro.

while(not enforcou and not acertou):

Dessa maneira, qualquer um que olhe nosso código, de cara já vai entender como funciona o nosso while e nosso jogo. Que nosso jogo vai rodar enquanto o jogador não se enforcou e não acertou.

while(True):

Já quem olhar esse while, terá mais dificuldade em entender em quais circunstancias ele vai parar, já que pelo while não temos essa informações e vamos ter que caçar os break e entender quando eles acontecem.

O instrutor sugeriu esse desafio, para que o aluno praticasse e entendesse melhor o while e o break, e você entendeu corretamente, parabéns.

Bons estudos.

Igor, sem sobra de dúvidas a abordagem com o

while(not enforcou and not acertou):

fica muito mais legível, fácil de entender e evita erros.

Um novo desenvolvedor poderá remover os breaks e o laço ficará em loop infinito. Esse meu código com usando o break, poderá ficar melhor se eu acrescentasse comentários, ressaltando a importância do break