7
respostas

Função Index Python 3 Aula 2: Encontrando Strings

O código passado na aula foi o seguinte:


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...")

Não entendi como o index = 0 e index = index + 1 consegue mostrar a posição da letra informada no chute = input

7 respostas

O comando "for letra in palavra_secreta" ira fazer uma busca espaço por espaço da letra na variável palavra_secreta e comparar se o chute dado é igual a letra. O index e o index + 1 servira para mostrar a posição da letra.

Note que a condição if só é executada se chute for igual a letra (chute == letra), caso não seja ou caso seja, depois é adicionado + 1 ao index para procurar mais letras parecida com o chute...

Então se a palavra por "banana" e eu mando procurar a letra "a", o python iá encontra a letra na posição [1] e adiciona +1 ao index e irá recomeçar a buscar a partir desta posição? Encontrando [3] e [5] também.

Caso contrário ele deveria sempre retornar [2], não?

Ele checa uma por uma, sempre adicionando 1 ao index sempre e somente apresenta aquela mensagem se o seu chute for igual a letra da atual posição. Exemplo, a mensagem sera indicada quando o index for, respectivamente, [1], [3], [5].

Caso não acha-se nenhuma letra a, supondo ser outra palavra, o comando for verificaria todos os espaços porem não apresentaria a mensagem, já que não satisfez a condição do if.

O index ira acompanhar o for até a ultima letra, a diferença esta na execução da mensagem. A variável index é apenas para poder informar qual seria a posição da letra na palavra.

Desculpa, mas continuo sem entender.

Se eu não acrescentar +1 ao index no final, ele me retorna sempre a posição [0]. Não deveria retornar pelo menos a primeira posição?

Sim, se você não acrescentar o +1 ao index, a cada passagem do comando "for" por cada letra da palavra, o index continuara sendo 0 e caso a situação "if" for satisfeita irá ocorrer o seguinte:

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

A primeira chave {} ira ser substituída pela atual letra do comando "for" e a segunda {} pelo index, que no caso, como está com o mesmo valor será 0.

Tente tirar o +1 do código e rodar o programa para você entender melhor.

Desculpa se minha didática é ruim...

Então, eu fiz isso e ele mostrou a posição sempre [0]. Por isso não entendi como o index faz correr toda a palavra e mostrar a posição.

Não deveria usar uma função semelhante a len()?

A função len() mostraria o total das letras, o index apenas acompanha a variável letra, ele vai acompanhando para ter um parâmetro da posição.

Poderia mandar o código completo aqui?