1
resposta

Associar index com posição da letra certa

letras_acertadas[index] = letra
index += 1

Tenho dificuldade em associar o index com posição da letra certa a partir desse contador.

1 resposta

Oii Morgana, como você está? Espero que esteja bem ^-^

Vamos pegar o trecho completo que se refere a parte que você mostrou acima e vamos destrinchá-lo, tudo bem?

# trecho completo

if (chute in palavra_secreta): 
        index = 0
        for letra in palavra_secreta: 
            if (chute.upper() == letra.upper()):
                letras_acertadas[index] = letra
            index = index + 1

Agora, suponha comigo que a palavra secreta seja "banana" e a variável chute seja a letra a. Veja como o programa irá se comportar:

  • Na primeira linha: if (chute in palavra_secreta): o programa irá testar se existe a letra a na palavra banana. Existe? Sim. Como essa condição é verdadeira, o programa entrará dentro deste primeiro if.

  • Na segunda linha: index = 0, o index é responsável por encontrar a posição da letra que chutamos na palavra secreta. Então veja comigo:

    • letra B -> posição 0
    • letra A -> posição 1
    • letra N -> posicão 2
    • letra A -> posição 3
    • letra N -> posição 4
    • letra A -> posição 5

Como a letra que chutamos é a letra a, a variável index é responsável por encontrar os números das posições 1,3,5, concorda? Pois essas posições contém a letra A na palavra secreta. O motivo desse index começar zerado vamos entender posteriormente.

  • Na terceira linha: for letra in palavra_secreta:, o que fazemos é percorrer cada letra da palavra secreta, então se a palavra secreta é banana, a variável letra desse for na primeira interação valerá o B, na segunda interação o A, na terceira o N e assim por diante. Observe que dessa forma estamos percorrendo cada letra da palavra secreta. E porque fazemos isso? Para que possamos encontrar em qual posição da palavra secreta o chute foi acertado.

  • Na quarta linha: if (chute.upper() == letra.upper()), o teste é feito para saber se o chute que fizemos é igual a cada letra que está sendo percorrida. Lembra que nosso chute é a letra a, certo? Então quando o programa entrar nesse for e percorrer cada letra da palavra secreta, qual será a primeira letra? A letra B.

    • Então o programa fará o teste: A == B? Falso. Como é falso, o programa continua sua sequência e não entra dentro desse if. E agora, como iremos para a próxima letra da palavra secreta, o index (posição) é incrementada, observe que inicialmente estávamos na posição 0 (index = 0) e agora, vamos para index = 1.
    • Na próxima interação do for, qual será a próxima letra da palavra secreta? A letra a. Então novamente o programa fará o teste: A == A? Verdadeiro. Como é verdeiro, o programa entrará dentro da condição do if e atribuirá na posição do index a letra que foi acertada. Quanto vale o nosso index? 1. Veja acima que a letra A da palavra secreta se encontra na posição 1.
    • Após entrar nesse if e fazer essa atribuição o programa novamente incrementa o index, que agora passa a valer 2.
    • Qual será a próxima letra da palavra secreta? A letra n . Então novamente o programa fará o teste: A == N? Falso. Como é falso, o programa continua sua sequência e não entra dentro desse if. E agora, como iremos para a próxima letra da palavra secreta, o index (posição) é incrementada, agora ele valerá 3. Veja que conforme percorremos cada letra, o index é incrementado para que a letra e a posição sejam associadas nas devidas posições corretas.
    • E assim por diante até percorrer todas as letras da palavra secreta para cada chute.
    • O index começa com 0 pois a cada novo chute, teremos que começar todo o procedimento novamente para encontrar a posição daquela letra que está correta e atribuirmos o valor dela na posição correta da variável letras acertadas.

Qualquer dúvida estou por aqui, tá bom?

Grande abraço e bons estudos!