1
resposta

Erro na leitura da palavra secreta

aparece erro na linha porem nao sei identificar o que , segui de acordo com o passo a passo. Eu criei um arquivo txt e tambem tem as frutas lá.

 forca.py
import random

def jogar():
     imprime_mesagem_abertura()

     palavra_secreta = carrega_palavra_secreta()
     inicializa_letras_acertadas()


     enforcou = False
     acertou = False
     erros = 0
     print(letras_acertadas)

     while (not acertou and not enforcou):


          chute = input("Qual letra ?")
          chute: str = chute.strip()

          if (chute in palavra_secreta ):
               index = 0
               for letra in palavra_secreta :
                    if (chute == letra):
                         letras_acertadas[index] = letra
                    index = index + 1
          else :
               erros += 1
          enforcou = erros == 6
          acertou = "_" not in letras_acertadas
          print(letras_acertadas)

     if (acertou):
          print("Você ganhou!!")
     else:
          print("Você perdeu!!")
     print("fim de jogo")


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

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

def carrega_palavra_secreta():
     arquivo = open("palavras.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()

     return palavra_secreta

def inicializa_letras_acertadas(palavra):
     return ["_" for letra in palavra]

if (__name__ == "__main__"):
     jogar()
1 resposta

Olá Andrei, tudo bem? Espero que sim!

Você precisa retirar essa parte no meio do seu código:

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

Ela está duplicada e precisa estar no final do código, após todas as funções. Deixe apenas a última que já está ao final e remova a que está após a função jogar().

Além disso, a função jogar está faltando a inicialização de uma variável, letras_acertadas.

def jogar():
     imprime_mesagem_abertura()

     palavra_secreta = carrega_palavra_secreta()
     letras_acertadas = inicializa_letras_acertadas()

Ela fica após a palavra_secreta e está constando somente a função, sem a atribuição à variável letras_acertadas.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!