Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

'def carregar letras' não funciona.

Boa noite,

estou tentando rodar meu programa, porém não consigo criar esta função sem que apresente este erro:

Traceback (most recent call last): File "C:\Users\User\Documents\PROGRAMAÇÃO\ALURA\JOGOS\forca.py", line 71, in jogar() File "C:\Users\User\Documents\PROGRAMAÇÃO\ALURA\JOGOS\forca.py", line 8, in jogar letrasacertadas = carregarletras() File "C:\Users\User\Documents\PROGRAMAÇÃO\ALURA\JOGOS\forca.py", line 67, in carregarletras return ["" for letra in palavrasecreta] NameError: name 'palavrasecreta' is not defined*

Eu consegui compreender que é um erro em relação ao nome e procurei pelos motivos que podem levar a este erro, porém não consegui resolvê-lo. Será que alguém consegue ajudar?

# JOGO DA FORCA
from random import randrange


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


def carregar_palavra():
    arquivo = open('palavras.txt', 'r')
    palavras = []

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

    arquivo.close()

    numero = randrange(0, len(palavras))
    palavra_secreta = palavras[numero]

    return palavra_secreta


def carregar_letras():
    return ["_" for letra in palavra_secreta]


def jogar():
    mensagem_abertura()
    palavra_secreta = carregar_palavra()
    letras_acertadas = carregar_letras()

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

# enquanto (True e True):
    while not enforcou and not acertou:
        chute = input('Chute uma letra: ').upper().strip()

        if chute in palavra_secreta:
            index = 0
            for letra in palavra_secreta:
                if chute == letra:
                    letras_acertadas[index] = letra
                index += 1
        else:
            erros += 1
            print('Você ainda possui {} tentativas...'.format(6-erros))

        enforcou = erros == 6
        acertou = "_" not in letras_acertadas
        print('Tente outra letra...')
        print(letras_acertadas)
        print('Jogando...')

    if acertou:
        print('Parabéns! Você acertou a palavra {}!'.format(palavra_secreta))

    elif enforcou == True:
        print('Acabaram suas tentativas... Você foi enforcado! \nA palavra era {}!'.format(palavra_secreta))
    print("Fim do jogo")


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

Eric, você precisa adequar esse bloco de código:

def carregar_letras():
    palavra_secreta = carregar_palavra()
    return ["_" for letra in palavra_secreta]

A palavra secreta precisa ser definida.

Favor não esquecer de marcar a questão do fórum como solucionada, caso essa esteja.

Obrigado, Rosemeri! Então, eu não consigo definir a variável palavra_secreta... Essa que é a grande questão!

solução!

Consegui rodar o programa após muito custo! Tive que consertar essas duas partes.... Muito obrigado!

def carregar_letras(palavra): #INCLUI PALAVRA
    return ["_" for letra in palavra] #INCLUI PALAVRA


def jogar():
    mensagem_abertura()
    palavra_secreta = carregar_palavra()
    letras_acertadas = carregar_letras(palavra_secreta) #INCLUI PALAVRA_SECRETA