1
resposta

Jogo de Forca

import random
def jogar():

    print('**********************************')
    print('** Bem Vindo ! Ao Jogo da Forca **')
    print('**********************************')

    arquivo = open('Palavras.txt','r') #Abrindo arquivo de palavras no modo leitura.
    palavras = []

    for linha in arquivo:   #Lendo as palavras do arquivo.
        linha = linha.strip().upper()
        palavras.append(linha)
    arquivo.close()
    numero_palavras = random.randrange(0,len(palavras))

    palavra_secreta = palavras[numero_palavras]

    qnt_letras = int(len(palavra_secreta))
    letra_acertada = ["_" for letra in palavra_secreta]  #Inserindo "-" na minha lista de acordo com a quantidade de palavras.

    enforcou = False
    acertou = False
    tentativas = 0

    print(' ')
    print(letra_acertada)
    print(' ')
    print('**********************************')

    while(not enforcou and not acertou):

        chute = input('Qual letra? ')
        chute = chute.strip().upper()    #Padronizando String.

        if(chute in palavra_secreta):

            index = 0
            for letra in palavra_secreta:

                if(chute == letra):
                    print(' ')
                    letra_acertada[index] = letra
                    print(letra_acertada)
                    print(' ')
                    print('**********************************')

                index += 1
        else:
            tentativas += 1
            print("Faltam {} tentativas.".format(qnt_letras - tentativas))

        #Validação para encerrar o Loop.
        if(tentativas == qnt_letras):
            break
        elif("_" not in letra_acertada):
            break

        print(letra_acertada)

    #Resultado do Jogo.
    if ("_" not in letra_acertada):
        print("Você Ganhou :)")
    else:
        print("Você Perdeu :(")

    print('Fim do Jogo.')
if(__name__ == '__main__'):
    jogar()
1 resposta

Olá Higor, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura.

Quero aproveitar a oportunidade e recomendar uma modificação em uma parte do código. Quando é realizado a verificação se a letra informada pelo usuário é igual a letra selecionada da palavra secreta, dentro do laço if(chute == letra): foi adicionado alguns prints, caso a palavra secreta possua letra repetidas como por exemplo a palavra “banana” e o usuário informe a letra “a” será impresso no console três vezes a letra acertada.

Recomendo que troque a seguinte parte do código (no meu editor a referência é da linha 42 a 46) :

                if(chute == letra):
                    print(' ')
                    letra_acertada[index] = letra
                    print(letra_acertada)
                    print(' ')
                    print('**********************************')

Troque por:

                if(chute == letra):
                    letra_acertada[index] = letra

`

Basta retirar os prints dessa parte do código, o código continuará imprimindo as letras acertadas, fazendo o uso do print que está fora do laço if(chute in palavra_secreta): (linha 59 na minha referência antes da modificação).

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos.