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

O programa não contabiliza o acerto e todos os chutes são contabilizados como um erro.

def jogar():

    import random

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

    palavra_secreta_lista = ["laranja","Pato","maça","computador","Musica","banana","batata"]
    palavra_secreta = random.choice(list(palavra_secreta_lista))
    letras_acertadas = ["_" for letra in palavra_secreta]


    enforcou = False
    acertou = False
    erros = 0

    print("Olá jogador, você tem um total de 6 tentativas antes de enforcar um homem inocente")
    print("Boa sorte")

    print(letras_acertadas)

    while (not acertou and not enforcou):

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

        if(chute in palavra_secreta):
            index = 0
            for letra in palavra_secreta:
                if (chute.upper() == letra.upper()):
                    letras_acertadas[index] = letra
                index += 1
        else:
            erros += 1
            print("Ops, você errou! Faltam {} tentativas.".format(6 - erros))

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

    if (acertou):
        print("Você ganhou!!")
    else:
        print("Você perdeu!!")
    print("Fim do jogo")


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

Eu tentei fazer com que o jogo escolhesse uma palavra aleatória de uma lista, mas aí ele deixou de contabilizar os acertos e todas as tentativas são marcadas como se tivesse errado, não sei oq preciso mudar pro programa voltar a funcionar. A parte da palavra aleatória funcionou

4 respostas
letras_acertadas = ["_" for letra in palavra_secreta_lista]

O seu problema está nessa linha, você está ordenando para o programa colocar um underscore para cada item dentro da lista de palavras, o que sempre retorna 7 underscores, que corresponde as 7 palavras na lista.

Então mano, essa parte realmente eu tinha errado mas mesmo concertando isso e aparecendo o numero certo de underscore pra palavra aleatória, o programa da sempre que estamos errando

solução!

Você está colocando a letra do chute em UpperCase enquanto toda a palavra_secreta está em LowerCase, assim o loop for nunca encontrará a letra dentro da palavra_secreta

palavra_secreta = random.choice(list(palavra_secreta_lista)).upper()

Vlw mano, agora deu certo