Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Dúvida sobre a variável INDEX

Bom dia, boa tarde e boa noite a todos os colegas.

Por algum motivo a criação da variável index para definição da posição da letra na palavra "banana" não está ficando muito claro em minha cabeça. Compreendi que ela tem o papel de guardar a posição inicial da primeira letra (exemplo: B é a posição "O" e as demais seguindo 1,2,3,4 e 5 sucessivamente) no entanto não ficou muito claro como ela é chamada dentro deste código descobrindo as demais posições).

no trecho print("Encontrei a letra {} na posição {}".format(letra, index)) está bem claro o que está acontecendo. No entanto por mais que eu saiba o que está acontecendo no programa, não ficou muito claro como essa variável está atuando.

Não sei se a dúvida ficou muito clara, sou iniciante, estou tentando pegar o "pulo do gato ainda".

Obs: o Material é muito bom e o professor também!

def jogar(): print("") print("Bem vindo no jogo de forca!") print("")

palavra_secreta = "banana"

enforcou = False acertou = False

while(not enforcou and not acertou):

chute = input("Qual letra? ")
chute = chute.strip()

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

print("Jogando...")

if(name == "main"):

5 respostas

Meu amigo bom dia!

Sua pergunta é muito inteligente.

Esta variável index só é utilizada na hora do print, para ajudar a exibir pro usuário onde estava a posição da letra.

por isso que ela é inicializada com zero e vai acrescentando, no dia a dia, quando você for usar loop você terá muitas vezes a necessidade de saber em qual posição do array/lista você achou o que queria, e é desta forma que você acha.

Em algumas outras linguagens o próprio loop oferece nativo uma variável index, mas não é o caso do python, dai a necessidade de fazer manualmente.

Boa noite, Carlos.

Muito obrigado pela resposta. Veja se consegue me auxiliar em uma dúvida talvez um pouco mais profunda.

Se temos o "index = 0" e index = index + 1 para palavra banana (que possui 06 letras) temos:

b(0) a(1) n(2) a(3) n(4) a(5)

Desta forma está compreendido que que leitura só será realizada da posição 0 (letra inicial) até posição zero 5 (ultima letra).

Acho que minha dúvida seria mais como é que o programa lê a posição 1 , 3 e 5 se eu digitar a letra "a"?

obs:

Se mudo o index = 0 ; index = index + 2 (ele muda a posição conforme informação abaixo).

b(0) a(2) n(4) a(6) n(8) a(10)

Mas a dúvida persiste, como é que ele lê que a letra "A" (por exemplo) está nas posições 2, 6 e 10?

é por conta do trecho abaixo? Seo chute for igual a letra ele lê a posição somente daquela letra? Se for isso ta dominado.. rsrs.. estamos juntos!

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

A "index" está ali somente para definir o critério das posições de cada letra? Que por boa prática se inicia em 0 e vai somando + 1 no looping até a ultima letra da palavra?

Boa noite meu amigo!

A "index" está ali somente para definir o critério das posições de cada letra? Não é para "Definir" e sim informar a posição Que por boa prática se inicia em 0 e vai somando + 1 no looping até a ultima letra da palavra? Exatamente, como o leitor é leigo e não vai entender a posição 0, pode iniciar com 1 sem problemas

Leia a explicação nesta url - https://cursos.alura.com.br/course/python-3-avancando-na-linguagem/task/25112

Para cada letra digitada o loop vai percorrer a palavra por inteiro para mostrar onde achou as letras


Bem vindo ao jogo da Forca!


Qual letra? n Encontrei a letra n na posição 2 Encontrei a letra n na posição 4 Jogando...

Fique a vontade para perguntar algo

solução!

Oi Rpontes, tudo bem?

Acho que entendi seu dilema.

O fato é que a cada loop, o index percorre todas as posições possíveis da sua palavra a cada loop. Por exemplo, se a letra "a" está na posição (1), toda vez que o usuário digitar a letra "a", o programa vai varrer todas as posições procurando as que tem a letra "a" como opção verdadeira. Por isso você precisa pré definir a posição do index como zero inicialmente e incrementar 1 a cada volta do loop. Fiz alguns comentários no código, veja se faz sentido e se responde a sua questão:

index = 0  #aqui você define a posição de início da "varredura" da palavra.  É a primeira posição.

for letra in palavra_secreta:

    # aqui o programa vai testando cada letra da palavra secreta, o "for" só acaba depois que o número de posições da palavra acaba. Então, no nosso caso da palavra "banana" o for vai rodar 6 vezes. O Python tem a inteligência de considerar a palavra como uma lista, logo, a palavra nada mais é do que uma sequencia de letras. Sendo assim, o "index" não está fazendo nada neste momento. 
    
    if(chute.upper() == letra.upper()):
        print("Encontrei a letra {} na posição {}".format(letra, index)) 
    
         # [rodada 0] - Veja que o index somente será usado para mostrar a posição da letra digitada na "posição" do seu "print". Estamos na rodada zero, ou seja, testando a primeira posição da palavra. Desta forma, se a letra digitada foi "a" e o loop estiver na rodada zero, ele não vai satisfazer a condição do "if" e não vai gravar nada na variável.
        
        #[rodada 1] -  Agora sim, com o index = 1 vai encontrar a letra "a", vai satisfazer a condição do "if" e o programa vai imprimir a posição em que a condição do "if" foi satisfeita no seu "print"
        
        #[rodada 2] - Agora o index é 2, e o "if" está verificando se tem a letra "a" na terceira posição. Neste caso o "if" não é satisfeito e o programa não registra nada no print, segue para o próximo passo para incrementar o index. E por aí vai.... 
        
    index = index + 1  
    
    #[rodada 0] - agora o index mudou de zero pra "1", e o for continua funcionando (lembra que esse for vai rodar 6 vezes)
    #[rodada 1] - agora o index mudou pra 2
    
    
    

Carlos e Rafael, só tenho a agraceder o apoio. Sou iniciante (como informei inicialmente) e vocês dois conseguirm me auxiliar na compreensão do que está ocorrendo no programa!

Nos vemos por ai. Até mais!