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

Mãos na Massa: Exportando o código para funções

Adicionei um tratador de entradas também, retirando números e deixando apenas uma letra ao escrever

import random


def apresentacao():

    print("*********************************")
    print("Bem vindo ao jogo de forca!")
    print("*********************************")


def carregar_palavra_secreta():

    arquivo = open("palavras.txt", "r")
    palavras = []

    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)

    arquivo.close()

    n = random.randrange(len(palavras))
    return palavras[n]


def entrada_chute(letras_chutadas):

    chute = input("Qual letra? ")
    chute = chute.strip().lower()
    if not tratar_chute(chute, letras_chutadas):
        return False
    return chute


def tratar_chute(chute, letras_chutadas):

    if (len(chute) != 1) or (not chute.isalpha()):
        print("Chute inválido, apenas letras")
        return False
    elif chute in letras_chutadas:
        print("Você já testou essa letra!")
        return False
    else:
        letras_chutadas.append(chute)
        return True


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("A palavra era {}".format(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 desenha_forca(erros):
    print("  _______     ")
    print(" |/      |    ")

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

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

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

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

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

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

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

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


def jogar():

    apresentacao()
    palavra_secreta = carregar_palavra_secreta()

    letras_acertadas = ["_" for _ in palavra_secreta]
    letras_chutadas = []

    tentativas, erros = 7, 0

    enforcou = False
    acertou = False

    # enquanto não enforcou e não acertou
    while not enforcou and not acertou:

        chute = entrada_chute(letras_chutadas)
        if not chute:
            continue

        if chute in palavra_secreta:
            for i, letra in enumerate(palavra_secreta):
                if chute == letra:
                    letras_acertadas[i] = letra
        else:
            erros += 1
            desenha_forca(erros)

        print(*letras_acertadas)
        print(f"Faltam {tentativas - erros} tentativas!")

        acertou = "_" not in letras_acertadas
        enforcou = erros == tentativas

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


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

Oi, Henrique! Tudo bem?

Parabéns pelo projeto, é sempre muito bom poder acompanhar nossos alunos aplicando os conhecimentos adquiridos nos nossos cursos e elaborando seus códigos, bate um orgulho! Sua iniciativa é uma ótima forma de exercitar conceitos de programação.

Obrigada também por compartilhar o seu código aqui na nossa comunidade do fórum!

Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software