5
respostas

Função do index

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

Eu não consegui entender a funcionalidade do index e porque uma vez q foi chamado no .format não apareceu o 0 declarado fora do laço, já que não houve nenhuma alteração nele.

5 respostas

Olá Tiago, boa tarde!

O index guarda a posição da letra na palavra secreta. Caso sua palavra secreta seja 'banana' e seu chute seja a letra 'b', seu programa deve imprimir Encontrei a letra b na posição 0.

Se isto não está acontecendo, há algo de errado com seu programa. Quando você chuta a letra 'b' o que acontece?

O programa funciona, porém eu não entendi qual o fundamento do index guardar a posição em que a letra inserida no chute está dentro da palavra, jáque o valor que ele guarda é 0, e a necessidade do index+=1 na última linha pra ele funcionar.

Caso a palavra seja 'banana' e o chute seja 'a', o index deve ser outro, certo? É o que a linha de código index = index + 1 faz dentro do loop for. E ao chutar a letra 'a' vai imprimir:

Encontrei a letra a na posição 1
Encontrei a letra a na posição 3
Encontrei a letra a na posição 5

Ou seja, toda vez que chute == letra vai imprimir que encontrou a letra em determinada posição (index). O index será incrementado toda vez dentro do loop for mas só será impresso se chute==letra.

Quem joga o jogo da forca precisa saber, além de se acertou ou não uma letra, qual posição ela se encontra na palavra secreta (em caso de acerto) para facilitar encontrar a palavra. É assim que o jogo funciona.

Por exemplo, banana possui 3 letras 'a' e se seu jogo apenas mostrar se acertou ou não essa letra vai ficar mais difícil saber quantas vezes ela se repete na palavra secreta (em caso de acerto) e também mais difícil de descobrí-la.

Não sei se isso responde sua dúvida. Se ainda não estiver claro, poste novamente aqui.

Então o index é uma ferramenta built-in para esse fim de manipulação de strings?

Oindex não é um built-in. Ele começa a existir no momento que você atribui um valor a ele, nesta linha:

index = 0

Você criou a variável chamada index(você poderia dar outro nome a ela, por exemplo, posicao) que inicia com o valor 0 (zero). No decorrer do seu programa, ela é modificada. Veja que ela é incrementada dentro do laço for,:

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

Toda vez que entrar no laço for, sua variável chamada 'index' será atualizada para index + 1.

Ou seja, se o' index' é 0 (zero), ao entrar no laço for (depois do bloco condicional if), será atualizado para 1 (já que index + 1 = 0 + 1 = 1).

Ficou mais claro agora?