1
resposta

função inicializa_letras_acertadas

Eu segui os passos do professor e agr que eu estou testando meu código ele não está indo pois diz que a função não é iterável. A função é a inicializa_letras_acertadas, e está conforme do professor, mas não funciona, teria outro jeito de fazer pra dar certo ?

import random
from modulos import imprime_mensagem_perdedor, imprime_mensagem_vencedor, desenha_forca

def jogar():
    imprime_mensagem_abertura()
    palavra_secreta = carrega_palavra_secreta

    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)

    acertou = False
    errou = False
    erros = 0

    while(not acertou and not errou):

        chute = pede_chute()

        if (chute in palavra_secreta):
            marca_chute_correto(chute, letras_acertadas, palavra_secreta)
        else:
            erros += 1
            desenha_forca(erros)

        errou = erros == 7
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)


    if acertou:
        imprime_mensagem_vencedor()
    else:
        imprime_mensagem_perdedor(palavra_secreta)



def marca_chute_correto(chute, letras_acertadas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if (chute == letra):
            letras_acertadas[index] = letra
        index += 1

def pede_chute():
    chute = input("Qual letra? ")
    chute = chute.strip().upper()
    return chute


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

def imprime_mensagem_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


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

o erro que apresenta:


Bem vindo ao jogo da Forca!


Traceback (most recent call last): File "/Users/jullyensoares/ALURA/python_advanced/game_loop3.py", line 73, in jogar() File "/Users/jullyensoares/ALURA/python_advanced/game_loop3.py", line 8, in jogar letras_acertadas = inicializa_letras_acertadas(palavra_secreta) File "/Users/jullyensoares/ALURA/python_advanced/game_loop3.py", line 50, in inicializa_letras_acertadas return ["_" for letra in palavra] TypeError: 'function' object is not iterable

1 resposta

Oii, Jullyen! Tudo bem?

Peço desculpas pela demora em respondê-la.

Obrigada por disponibilizar o trecho do seu código, por ele pude identificar um erro de sintaxe na função carrega_palavra_secreta para atribuir o valor à variável palavra_secreta. Não foi adicionado os parênteses após o nome da função.

Diante disso, sugiro que altere a linha de código que está assim?:

palavra_secreta = carrega_palavra_secreta

Para a função com o parêntese:

palavra_secreta = carrega_palavra_secreta()

Espero ter ajudado.

Bons estudos, Jullyen!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. 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