4
respostas

Posição encontrada não condiz com a real

Ao procurar por uma letra, o programa está retornando um posição completamente fora do espero. Por exemplo, se eu procuro a letra 'a' ele retorna: Encontrei a letra a na posição 1 Encontrei a letra a na posição 7 Encontrei a letra a na posição 31

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

    palavra_secreta = "banana"
    acertou = False
    enforcou = False

    while not acertou and not enforcou:

        chute = input("Qual letra?")

        index = 0
        for letra in palavra_secreta:
            if chute == letra:
                print("Encontrei a letra {} na posição {}".format(letra, index))
            index += index + 1

        print("jogando...")


    print("Fim de Jogo!")


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

O problema era na somatória do index:

index += index + 1
def jogar():
    print("*********************************")
    print("***Bem vindo ao jogo da forca!***")
    print("*********************************")

    palavra_secreta = "banana"
    acertou = False
    enforcou = False

    while not acertou and not enforcou:

        chute = input("Qual letra?")

        index = 0
        for letra in palavra_secreta:
            if chute == letra:
                print("Encontrei a letra {} na posição {}".format(letra, index))
            index = index + 1 #< ou index += 1

        print("jogando...")


    print("Fim de Jogo!")


if __name__ == "__main__":
    jogar()

Comigo também deu erro, dando a posição com um a menos. Aí mudei index = 1 (ao invés de zero) e solucionou.


def jogar():


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

    palavra_secreta = "banana"

    enforcou = False
    acertou = False

    while(not enforcou and not acertou):

        chute = input("Qual letra? ")
        index = 1
        for letra in palavra_secreta:
            if (chute == letra):
                print("Encontrei a letra {} na posição {}".format(letra, index))
            index = index + 1
        print("Jogando...")







    print("Fim do jogo")



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

O problema é na somatória, você pode corrigir fazendo isso:

index = index + 1

Ou de forma simplificada:

index += 1