Eu não entendi exatamente como o index guarda a posição das letras.
Eu não entendi exatamente como o index guarda a posição das letras.
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.
No outro POST, o usuário: Thiago Matos postou:
Talvez ajude.
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:
Letra | b | a | n | a | n | a |
Index (posição) | 0 | 1 | 2 | 3 | 4 | 5 |
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ção | Código | palavra_secreta | chute | index | letra | |
---|---|---|---|---|---|---|
1 | palavra_secreta = "banana" | "banana" | ||||
2 | chute = input ( "Qual a letra? ") | "banana" | a | |||
3 | index = 0 | "banana" | a | 0 | ||
4 | for letra in palavra_secreta: | "banana" | a | 0 | b | |
5 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 0 | b | |
6 | index = index + 1 | "banana" | a | 1 | b | |
7 | for letra in palavra_secreta: | "banana" | a | 1 | a | |
8 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 1 | a | Encontrei a letra a na posição 1 |
9 | index = index + 1 | "banana" | a | 2 | a | |
10 | for letra in palavra_secreta: | "banana" | a | 2 | n | |
11 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 2 | n | |
12 | index = index + 1 | "banana" | a | 3 | n | |
13 | for letra in palavra_secreta: | "banana" | a | 3 | a | |
14 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 3 | a | Encontrei a letra a na posição 3 |
15 | index = index + 1 | "banana" | a | 4 | a | |
16 | for letra in palavra_secreta: | "banana" | a | 4 | n | |
17 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 4 | n | |
18 | index = index + 1 | "banana" | a | 5 | n | |
19 | for letra in palavra_secreta: | "banana" | a | 5 | a | |
20 | if(chute == letra): print ( "Encontrei a letra {} na posição {}" .format(letra , index)) | "banana" | a | 5 | a | Encontrei a letra a na posição 5 |
21 | index = index + 1 | "banana" | a | 6 | a |
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
palavra_secreta
definimos ela como ”banana”
chute
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.for
para percorremos a palavra “banana”. Pegamos a primeira letra (b) e salvamos na variável letra
.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.letra
.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.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”.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.