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

Passo a passo do código da aula e dá erro

Segui os passos do código da aula e ele se recusa aceitar 'palavra_secreta'. Segue foto e código completo abaixo.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

import random



def jogar():

    imprime_mensagem_abertura()
    palavra_secreta = carrega_palavra_secreta()
    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)


enforcou = False
acertou = False
erros = 0

while(not enforcou and not acertou ):

    chute = input("Escolha a letra: ")
    chute = chute.strip().upper()

    if(chute in palavra_secreta):
        posicao = 0 
        for letra in palavra_secreta:
            if chute == letra:
                letras_acertadas[posicao] = letra 
            posicao = posicao + 1
    else:
        erros = erros +1 

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

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


#---------------------------------------

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():
    return ["_" for letra in palavra_secreta]



def imprime_mensagem_abertura():
    print("***BEM VINDO JOGO DA FORCA***")

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

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

Olá Raphael, tudo bem com você?

Será necessário algumas mudanças para que o código seja executado como proposto na aula, deixo abaixo os pontos que recomendo que sejam realizadas as mudanças.

  • Identação do código, uma parte do código está fora da função jogar(), seguindo a imagem como referência, selecione da linha 12 a linha 39 e pressione tab, fazendo dessa forma esse bloco de código ficará dentro da função jogar().
  • Acrescentar um argumento na função inicializa_letras_acertadas(), como no exemplo abaixo, use o seguinte nome, palavra_secreta :
def inicializa_letras_acertadas(palavra_secreta):
    return ["_" for letra in palavra_secreta]
  • A função carrega_palavra_secreta foi declarada duas vezes, a função que está correta é a primeira, linha 43 da imagem. Assim podemos retirar a segunda declaração, no meu teste essa função está a partir da linha 68 a linha 81.

Após realizar as mudanças acima, salve o arquivo e execute-o.

Peço que teste o que foi proposto acima, se porventura venha ocorrer algum erro peço que envie a mensagem de erro e uma print da tela no momento do erro.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!