1
resposta

Erro no python

Erro na index

ef jogar():
    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    palavra_secreta = "maça".upper()
    letras_acertadas = ["_" for letra in palavra_secreta]

    for letra in palavra_secreta:
        letras_acertadas.append("_")

    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
        print(letras_acertadas)
    print("fim de jogo")
if (__name__ == "__main__"):
    jogar()

mensagem de erro Traceback (most recent call last): File "C:/Users/Proprietario/PycharmProjects/pythonProject/forca.py", line 33, in jogar() File "C:/Users/Proprietario/PycharmProjects/pythonProject/forca.py", line 29, in jogar erros = erros == 6 UnboundLocalError: local variable 'erros' referenced before assignment

1 resposta

Olá,

O seu código rodou normalmente no meu PC, porém existem alguns motivos que podem ter feito o seu erro, vou listar alguns:

  • Você está usando quantidade diferente de espaços nas indentações, teoricamente isso não dá problema, mas quando dá erro é o tipo de coisa na sintaxe que você quer eliminar de cara... Ex: o "erros += 1" está indentado 5 espaços do else da linha anterior, o "letras_acertadas[index] = letra" está 3 espaços da linha anterior, e todos demais estão com 4 espaços (isso não é motivo de erro, mas é algo que é bom padronizar)
  • O erros += 1 geralmente dá esse erro quando você criar uma nova variável local dentro da função, então minha pergunta para você é: já existia uma variável "erros" antes de você chamar a função? Caso sim, o python trata a que já existia fora como Global e a interna da função como Local
  • Ainda no erros += 1, internamente o python gera uma nova variável, substitua por erros = erros + 1 e rode novamente, pode ser que assim ele utilize a mesma variável local.

Abs!