2
respostas

Solução Organizada

Parte do Código Solicitado, utilizei enforcou como sendo o próprio contador do limite de vezes que ele pode tentar, eliminando a variável "erros".

        else:
            if (enforcou == 1):
                print(f"Você Não Adivinhou. Foooi Enforcado!!!")
                break
            enforcou -= 1
            print(f"Você errou a letra, resta apenas {enforcou} tentativas")

Código Completo:


def jogar():
    print("#################################")
    print("***Bem Vindo no jogo da Forca!***")
    print("#################################\n")

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

    enforcou = 6
    acertou = False
    print("Você tem 6 Tentativas")

    while(enforcou != 0 and letras_acertadas != palavra_secreta):

        chute = input("\nQual letra? ")
        chute = chute.strip().upper()

        index = 0

        if(chute in palavra_secreta):

            for letra in palavra_secreta:
                if(chute == letra):
                    letras_acertadas[index] = letra
                index += 1

        else:
            if (enforcou == 1):
                print(f"Você Não Adivinhou. Foooi Enforcado!!!")
                break
            enforcou -= 1
            print(f"Você errou a letra, resta apenas {enforcou} tentativas")


        if(list(letras_acertadas) == list(palavra_secreta)):
            print(f"Parabéns você acertou a palavra secreta que é \n {letras_acertadas} \n")
            break

        print(letras_acertadas)

    print("Fim do Jogo")

if(__name__ == '__main__'):
    jogar()
2 respostas

Parabéns pela solução, foi uma boa ideia em usar um contador regressivo, mas para ter um código mais legível e ter a variável com nome semântico a sua função:

Recomendo fortemente trocar o nome da variável de 'enforcou' para 'tentativas' ou 'tentativas_restantes'.

Outra sugestão é para a variável índex que foi criada para percorrer as letras_acertadas, você pode usar um for com enumerate

essa parte

index = 0

if(chute in palavra_secreta):

    for letra in palavra_secreta:
        if(chute == letra):
            letras_acertadas[index] = letra
        index += 1

se resumiria a isso

if(chute in palavra_secreta):
    for index in enumerate(letras_acertadas):
        for letra in palavra_secreta:
            if(chute == letra):
                letras_acertadas[index] = letra

ps.: na condição do while tem um problema, letras_acertadas sempre será diferente de palavra_secreta, pois letras_acertadas é um vetor de string e palavra_secreta é uma string

palavra_secreta = "BANANA"
letras_acertadas = ["B","A","N","A","N","A"]

print( palavra_secreta == letras_acertadas) # False

Parabéns, super organizado.