Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Nova função

Desejo incluir uma função que marca as letras já digitadas pelo usuário,a fim de não ocorrer a digitalização da mesma novamente,visto que não é contabilizado se o usuário digitar a mesma letra errada duas vezes.Segue o código:

import random

def jogar():

    imprimir_mensagem_inicial()
    palavra_secreta = carrega_palavra_secreta()

    letras_acertadas =  ['_' for letra in palavra_secreta]
    enforcou = False
    acertou = False
    letras_erradas = 0


    while(not enforcou and not acertou):

        chute = input('Digite uma letra: ')
        chute = chute.strip().upper()

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

        else:
            letras_erradas += 1
            print(f'VOCÊ ERROU!FALTAM {7-letras_erradas} TENTATIVAS')
            desenha_forca(letras_erradas)

        enforcou = letras_erradas == 7
        acertou = '_' not in letras_acertadas
        print(letras_acertadas)

        if(acertou):
            imprime_mensagem_vencedor()
        elif(enforcou):
            imprime_mensagem_perdedor(palavra_secreta)



    print('FIM DE JOGO')

    jogar_novamente()





def imprimir_mensagem_inicial():
    print('*************************')
    print('Bem vindo ao jogo de Forca!')
    print('*************************')

def carrega_palavra_secreta():
    arquivo = open('palavras_secretas.txt', 'r')
    palavras = []
    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)

    arquivo.close()

    numero = random.randrange(0, len(palavras))
    palavra_secreta = palavras[numero].upper()
    print(palavras)
    print(palavra_secreta)
    return palavra_secreta

def desenha_forca(letras_erradas):
    print("  _______     ")
    print(" |/      |    ")

    if(letras_erradas == 1):
        print(" |      (_)   ")
        print(" |            ")
        print(" |            ")
        print(" |            ")

    if(letras_erradas == 2):
        print(" |      (_)   ")
        print(" |      \     ")
        print(" |            ")
        print(" |            ")

    if(letras_erradas == 3):
        print(" |      (_)   ")
        print(" |      \|    ")
        print(" |            ")
        print(" |            ")

    if(letras_erradas == 4):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |            ")
        print(" |            ")

    if(letras_erradas == 5):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |            ")

    if(letras_erradas == 6):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      /     ")

    if (letras_erradas == 7):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      / \   ")

    print(" |            ")
    print("_|___         ")
    print()

def imprime_mensagem_vencedor():
        print("Parabéns, você ganhou!")
        print("       ___________      ")
        print("      '._==_==_=_.'     ")
        print("      .-\\:      /-.    ")
        print("     | (|:.     |) |    ")
        print("      '-|:.     |-'     ")
        print("        \\::.    /      ")
        print("         '::. .'        ")
        print("           ) (          ")
        print("         _.' '._        ")
        print("        '-------'       ")

def imprime_mensagem_perdedor(palavra_secreta):
    print("Puxa, você foi enforcado!")
    print(f"A palavra era {palavra_secreta}")
    print("    _______________         ")
    print("   /               \       ")
    print("  /                 \      ")
    print("//                   \/\  ")
    print("\|   XXXX     XXXX   | /   ")
    print(" |   XXXX     XXXX   |/     ")
    print(" |   XXX       XXX   |      ")
    print(" |                   |      ")
    print(" \__      XXX      __/     ")
    print("   |\     XXX     /|       ")
    print("   | |           | |        ")
    print("   | I I I I I I I |        ")
    print("   |  I I I I I I  |        ")
    print("   \_             _/       ")
    print("     \_         _/         ")
    print("       \_______/           ")

def jogar_novamente():
    print('Para jogar novamente,digite 1 ')
    print('Para sair,digite 2 ')

    jogar_novamente = int(input('Digite a opção desejada: '))

    if jogar_novamente == 1:
        jogar()
    else:
        stop

if __name__ == '__main__':
    jogar()
1 resposta
solução!

Opa, eu fiz isso com um set e verifiquei se a letra ja estava no set ou não. O set no python só aceita 1x de cada coisa que você coloca ali dentro (simplificando bastante é isso).

Segue a parte do meu codigo onde eu implemento isso:

    ...
    letras_erradas = []
    chutes_feitos = set()

    print(letras_acertadas)

    while(not enforcou and not acertou):
        while(True):
            chute = pede_chute()
            if(chute in chutes_feitos):
                print(f"Você ja tentou a letra {chute}, digite outra.")
            else:
                break

        chutes_feitos.add(chute)
        ...

Se quiser ver meu código completo eu tenho ele upado no github, só acessar clicando aqui