1
resposta

Left operand error

O meu código não roda o letras_acertadas com list comprehension.

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

    palavra_secreta = "pupunha".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 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
                    #print("Encontrei a letra {} na posição {}".format(letra, index))
                    print(f"Encontrei a letra {letra} na posição {index}")
                else:
                    erros += 1

        enforcou = erros == len(palavra_secreta)
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)

    if(acertou):
        print("Tu ganhaste!")
    else:
        print("Tu perdeste!")

    print("Fim do jogo")

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

Após rodar o código, dá erro TypeError: 'in ' requires string as left operand, not builtin_function_or_method na linha:

letras_acertadas = ["_" for letra in palavra_secreta]
1 resposta

Olá, Ádria! Tudo bem?

Acredito que o erro que você está enfrentando não está na linha que você mencionou, mas sim na linha onde você está tentando transformar o valor de chute em maiúsculas. No seu código, você esqueceu de adicionar os parênteses após o método .upper, o que faz com que o Python entenda que você está tentando usar o próprio método como uma string, e não o resultado dele.

Portanto, a linha:

chute = chute.strip().upper

Deve ser alterada para:

chute = chute.strip().upper()

Com essa pequena correção, seu código deve funcionar corretamente. A função upper() é usada para converter todas as letras minúsculas em uma string para letras maiúsculas. Se a string já estiver em maiúsculas, então nenhuma alteração será feita. Qualquer coisa manda aqui de novo.

Espero ter ajudado e bons estudos!