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

Erro no código que está igual ao video

Meu codigo está assim: import random

def jogar():

imprime_abertura()
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = inicializa_letras_acertadas(palavra_secreta)

enforcou = False
acertou = False
erros = 0

print(letras_acertadas)

while(not enforcou and not acertou):

    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("Você ganhou!!")
else:
    print("Você perdeu!!")
print("Fim do jogo")

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

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

if(name == "main"): jogar()

Quando eu executo aparece isso: C:\Programação\venv\Scripts\python.exe C:/Programação/forca.py


Bem vindo ao jogo da Forca!


Traceback (most recent call last): File "C:\Programação\forca.py", line 64, in jogar() File "C:\Programação\forca.py", line 6, in jogar palavra_secreta = carrega_palavra_secreta() File "C:\Programação\forca.py", line 46, in carrega_palavra_secreta arquivo = open("palavras.txt", "r") FileNotFoundError: [Errno 2] No such file or directory: 'palavras.txt'

Process finished with exit code 1

O que tem de errado, o que eu preciso mudar?

3 respostas
solução!

O problema é que o python não está encontrando o arquivo palavras.txt.

Caso você não tenha esse arquivo, você pode criá-lo pelo explorador de arquivos do windows ou do editor de código que estiver utilizando, ou também pode fazer como demonstrado pelo instrutor na aula anterior a esta da seguinte maneira:

  1. Abra o terminal. Recomendo que seja através do próprio editor de código, assim os comandos serão feitos já na pasta do projeto, não necessitando procurar pelo diretório correto.
  2. Digite os seguintes comandos:
arquivo = open('palavras.txt', 'w')
arquivo.write('palavra_desejada\n')  # Pode repetir esse comando para cada palavra que quiser adicionar
arquivo.close()

Caso você tenha esse arquivo, mas não na mesma pasta que o arquivo python onde está a função carrega_palavra_secreta(), basta adicionar o diretório correto no primeiro argumento da função open(). Por exemplo: open('pasta/palavras.txt', 'r').

Ou se estiver em uma pasta anterior, pode usar o ../ para voltar uma pasta, podendo utilizar vários em sequência para voltar várias pastas. Por exemplo: open('../palavras.txt', 'r').

O último caso que consigo imaginar é que talvez o arquivo esteja com o nome errado, como por exemplo palavrs.txt. Assim, basta corrigir o nome, e o código funcionará corretamente.

Outra dica é colocar o palavras.txt na pasta do projeto!

Mas o estranho é que esse rpoblema só esta surgindo quando eu declaro : def inicializa_letras_acertadas(palavra): return ["" for letra in palavra] Em uma função pq qnd nao está declarado o código funciona perfeitamente