6
respostas

Ainda sobre alguns problemas do Index.

Eu não entendi exatamente como o index guarda a posição das letras.

6 respostas

Olá Amanda, tudo bem? Espero que sim. Sou mais um aluno com dúvida, mas talvez te ajude só um pouco, se de fato a entendi bem.

Creio que aqui está a solução dessa dúvida:

index = 0

for letra in "BANANA":
    if (chute == letra):
        print(index)

    index = index + 1

Observe o seguinte Amanda, o INDEX depois do IF, está FORA da condição IF, de modo que, caso a letra do chute fosse B, o número que exibiria seria o 0(zero), pois, não somaria nenhum número. E de fato, a posição do B é na ZERO.

Acompanhe comigo, por favor:

Pra FICAR CLARO: Se o chute == N, o FOR iria passar na posição ZERO(0) que é B, e não iria achá-lo (o N), logo iria somar ao INDEX + 1, pois é o próximo comando após o IF. (É vital compreender que o INDEX não está dentro do IF, mas é o comando SEGUINTE ao IF).

INDEX que valia 0 agora vale 1.

Ae novamente o FOR iria passar na posição 1(UM) que é A, e não N, então o programa sairia da condição IF pois não achou o N e novamente executaria o INDEX + 1, que agora já seria:

INDEX que valia 1 agora vale 2.

Novamente o FOR passaria na posição 2 que é a letra N, então ele executaria a condição IF que diz que se o CHUTE == N, print LETRA e posição.

Logo, qual a posição do N? 2! - e qual valor do INDEX? 2 tbm! Pois ele foi somando toda vez que não conseguiu achar a letra. De modo que, quando ele chega na letra, ele tem o valor somado unitariamente de cada tentativa, que é o mesmo que a posição.

entendeu?

Olá pessoal, tudo bem com vocês?

Para entendermos o funcionamento do index, podemos fazer um teste de mesa.

Vou isolar a parte do código onde temos o uso do index, a interação com o usuário e a verificação das letras, ficando conforme abaixo:

palavra_secreta = "banana"

chute = input("Qual a letra? ")

index = 0

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

Reforçando alguns conceitos: quando usamos for letra in palavra_secreta estamos utilizando um laço de repetição onde ele irá percorrer cada letra da variável palavra_secreta. A cada interação a letra será salva na variável letra.

Em Python a contagem do index (posição) de uma string e em uma lista inicia com o zero (0). Sendo assim a posição das letras na palavra banana ficará da seguinte forma:

Letrabanana
Index (posição)012345

Guarde essa informação, ela é importante para entendermos o uso da variável index.

Outro conceito é o uso do if(chute == letra), nele, estamos testando se a letra informada pelo usuário é igual a letra que salvamos no laço for, em caso de verdadeiro irá informar para o usuário em qual posição foi encontrado usando o valor salvo na variável index.

Continua na próxima postagem

Continuação da postagem anterior

Na tabela abaixo temos o teste de mesa, na primeira coluna temos a contagem da interação, na segunda coluna temos a parte executada do código, as colunas 3 a 5 representam o valores salvos nas variáveis palavra_secreta, chute, index e letra respectivamente e a coluna 6 representa o que é imprimido para o usuário.

InteraçãoCódigopalavra_secretachuteindexletraprint
1palavra_secreta = "banana""banana"
2chute = input ( "Qual a letra? ")"banana"a
3index = 0"banana"a0
4for letra in palavra_secreta:"banana"a0b
5if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a0b
6index = index + 1"banana"a1b
7for letra in palavra_secreta:"banana"a1a
8if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a1aEncontrei a letra a na posição 1
9index = index + 1"banana"a2a
10for letra in palavra_secreta:"banana"a2n
11if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a2n
12index = index + 1"banana"a3n
13for letra in palavra_secreta:"banana"a3a
14if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a3aEncontrei a letra a na posição 3
15index = index + 1"banana"a4a
16for letra in palavra_secreta:"banana"a4n
17if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a4n
18index = index + 1"banana"a5n
19for letra in palavra_secreta:"banana"a5a
20if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index))"banana"a5aEncontrei a letra a na posição 5
21index = index + 1"banana"a6a

Continua na próxima postagem

Continuação da postagem anterior

Como ler a tabela?

Nessa tabela podemos ver o passo a passo do funcionamento do código buscando pela letra ‘a’. Na segunda coluna é apresentado a parte lógica de funcionamento do código, as demais vão os valores que estão sendo salvos nas variáveis. Abaixo uma explicação das principais linhas, as que não forem explicadas possuem um funcionamento igual as citadas anteriormente.

Linhas

  • 1ª : Estamos definindo o valor da variável palavra_secreta definimos ela como ”banana”
  • 2ª: Pedimos o usuário que forneça uma letra e salvamos ela na variável chute
  • 3ª: Definimos que a variável index contém o valor 0, como explicado anteriormente, a posição das letras vão ser contadas iniciando com zero, assim definimos que estamos no index 0, testando a primeira letra.
  • 4ª: Iniciamos o laço for para percorremos a palavra “banana”. Pegamos a primeira letra (b) e salvamos na variável letra.
  • 5ª: É feito a conferência se a letra é igual ao chute, se ela for igual será impresso a mensagem, nesse caso não é, estamos procurando “a” e a letra que estamos testando é “b”, o código passa sem imprimir.
  • 6ª: Nessa linha vamos adicionar o valor “1” a variável index, como terminamos o primeiro teste e não encontramos a letra que procuramos vamos iniciar testando a segunda letra, assim vamos adicionar “1” ao index para que ele tenha o mesmo valor da posição do próximo teste.
  • 7ª: Iniciamos a testagem da próxima letra, nesse momento estamos testando a letra “a”, ela é salva na variável letra.
  • 8ª: Conferimos se a letra é igual ao chute, nesse caso vai ser, estamos testando a letra “a” e o chute do usuário foi “a”, nesse momento o código vai imprimir a mensagem, ele vai fornecer o valor que está salvo em duas variáveis: letra e index. Veja os valores que estão salvos nelas, “a” e “1”. Assim o print informará para o usuário “Encontrei a letra a na posição 1”. Aqui entra o motivo de termos a variável index, ela é uma forma de acompanharmos onde estão as letras e onde encontramos elas, quando encontramos vamos informar para o usuário onde foi.
  • 9ª: Nessa linha vamos adicionar o valor “1” na variável index, como terminamos o segundo teste queremos que a variável esteja igual a posição que estamos testando, nesse caso que tenha o valor “2”.
  • 10ª: iniciamos novamente os testes.

Após a linha 10ª há uma repetição na lógica do teste. Observe que sempre somamos o valor 1 na variável índex e sempre quando o usuário inicia um novo chute, o índex é zerado, para que possa acompanhar a posição de cada letra na palavra.

Recomendo que vejam o seguinte vídeo explicando como fazer o teste de mesa:

Caso tenham dúvidas encontro-me à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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