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

Erro na função da variável "letras_acertadas"

import random

def iniciar_lc(word):
  return ["_" for letra in word]

def jogar():

  imprime_abertura()
  secret_word = gerar_sw()
  letras_certas = iniciar_lc(secret_word)

  enforcou   = False
  acertou    = False
  erros      = 0

  print(letras_certas)
  print(" ")

  while(not acertou and not enforcou):
    certo = input("escolha uma letra de A a Z: ")
    certo = certo.strip().upper()

    if(certo in secret_word):
      index = 0
      for letra in secret_word:
        if (certo.upper() == letra.upper()):
          letras_certas[index] = letra
        index += 1
    else:
      erros += 1
      print("você errou uma letra. restam {} tentativas,".format(6 - erros))

    print(letras_certas)
    print(" ")

    enforcou = erros == 6 
    acertou  = "_" not in letras_certas

  if(acertou):
    print("parabéns! você ganhou.")
  else:
    print("você perdeu.")
  print("fim de jogo.")  

def imprime_abertura():
  print("--->")
  print("jogo simples")
  print("        <---")
  print(" ")
  print("forca!")
  print(" ")

def gerar_sw():
  arquivo = open("palavras.txt", "r")
  palavras = []

  for linha in arquivo:
    linha = linha.strip()
    palavras.append(linha)

  arquivo.close()

  numero = random.randrange(0, len(palavras))
  secret_word = palavras[numero].upper()
  return

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

Traceback (most recent call last): File "main.py", line 18, in forca.jogar() File "/home/runner/jogos/forca.py", line 10, in jogar letras_certas = iniciar_lc(secret_word) File "/home/runner/jogos/forca.py", line 4, in iniciar_lc return ["_" for letra in palavra] TypeError: 'NoneType' object is not iterable

1 resposta
solução!

Gilson, tudo bem?

Na função "gerar_sw" está faltando retornar a "secret_word ". Modifique o código para retornar a palavra secreta e obterá êxito na execução. Por exemplo:

def gerar_sw():
  arquivo = open("palavras.txt", "r")
  palavras = []

  for linha in arquivo:
    linha = linha.strip()
    palavras.append(linha)

  arquivo.close()

  numero = random.randrange(0, len(palavras))
  secret_word = palavras[numero].upper()
  return secret_word

Também há um parênteses a mais na chamada da função jogar. O correto é:

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

Após essas modificações tente executar novamente o código.

Qualquer dúvida estou por aqui, tá bom?

Grande abraço!

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