1
resposta

[Bug] Oi gente, meu código ta dando erro e não sei o que é

def jogar():
    

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

    arquivo = "frutas.txt"
    with open(arquivo, "r", encoding="utf-8"):
        palavras = [linha.strip() for linha in arquivo]

    arquivo.close()

    print(palavras)

    palavra_secreta = "maca".upper()
    letras_acertadas = ["_"for letra in palavra_secreta]

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)
    

    while (not acertou and not enforcou):


        chute = input("Qual 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("Voce ganhou!")

    else:
        print("Voce perdeu")


    print("Fim do jogo")

if __name__ == "__main__": #vai fazer com que funcione se chamr diretamente
    jogar()

O erro que aparece é: File "c:\Users\Usuario\Desktop\Códigos\Jogos\Teste python\jogo_forca.py", line 58, in jogar() File "c:\Users\Usuario\Desktop\Códigos\Jogos\Teste python\jogo_forca.py", line 11, in jogar with open(arquivo, "r", encoding="utf-8"): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'frutas.txt' PS C:\Users\Usuario\Desktop\Códigos\Jogos>

Sendo que o meu arquivo frutas.txt ta na mesma pasta que os jogos

1 resposta

Oi, nesse caso o arquivo 'frutas.txt' tem que estar no mesmo diretório que o arquivo que está sendo executado ( supondo que você não esteja passando nenhum caminho para ele como fez no código). Ou seja seu arquivo frutas.txt deveria estar no diretório :

  • arquivo python: c:\Users\Usuario\Desktop\Códigos\Jogos\Teste python\jogo_forca.py"
  • arquivo txt : c:\Users\Usuario\Desktop\Códigos\Jogos\Teste python\frutas.txt"

Outra coisa que notei que é que seu arquivo.close não irá funcionar, isso porquê ele não está referenciando uma instância do arquivo aberto, e sim a string 'frutas.txt'.

Para funcionar você pode fazer da seguinte forma:

Quando utilizamos a diretiva WITH podemos atribuir o contexto aberto à uma variável, no seu caso , à um arquivo.

def jogar():
    

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

    arquivo = "frutas.txt"
    with open(arquivo, "r", encoding="utf-8") as arquivo_aberto:
        palavras = [linha.strip() for linha in arquivo]

    arquivo_aberto.close()

    print(palavras)

    palavra_secreta = "maca".upper()
    letras_acertadas = ["_"for letra in palavra_secreta]

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)
    

    while (not acertou and not enforcou):


        chute = input("Qual 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("Voce ganhou!")

    else:
        print("Voce perdeu")


    print("Fim do jogo")
if __name__ == "__main__": #vai fazer com que funcione se chamr diretamente
    jogar()