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

NameError: name 'imprime_mensagem_abertura' is not defined

Tentei da primeira vez por conta própria e deu o mesmo erro. Voltei tudo e copiei absolutamente tudo igual ao do professor.

import random


def jogar():

    print('********************************')
    print('*********Jogo da forca*********')
    print('********************************')

    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()

    letras_acertadas = ['_' for letra in palavra_secreta ]

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while not enforcou and not acertou:
        chute = input("Qual a letra? ")
        chute = chute.strip().upper()

        if chute in palavra_secreta:
            index = 0
            for letra in palavra_secreta:
                if chute == letra:
                    letras_acertadas[index] = letra
                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()

Mas quando substituo

import random

def jogar():

    print('********************************')
    print('*********Jogo da forca*********')
    print('********************************')

por

import random

def jogar():

    imprime_mensagem_abertura()

e jogo

def imprime_mensagem_abertura():
    print('********************************')
    print('*********Jogo da forca*********')
    print('********************************')

Para o final, inclusive no mesmo local onde o professor cola, surge a mensagem

NameError: name 'imprime_mensagem_abertura' is not defined
1 resposta
solução!

Olá Saulo, tudo bem?

Você mencionou que esta jogando a função def imprime_mensagem_abertura para o final do código, certo? Acredito que precisa defini-la antes de chamar a sua função jogar.

Pois o python lê o código de cima para baixo, você esta executando a função jogar antes de definir a imprime_mensagem_abertura.

Testa deixar

if name == "main": jogar()

por ultimo no código.

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