1
resposta

duvida na indentação

Analisando este trecho de codigo, se a linha index = index +1 estiver indentada ao for e não ao if, isso significa que ela estará sendo executada somente no while? vou deixar abaixo os trechos de codigo da minha duvida

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()):**
                letras_acertadas[index] = letra
            **index = index + 1**

        print(letras_acertadas)
        --------------------------------------------------------------------------------
                                    2º exemplo- AQUI O INDEX ALINHA AO FOR
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()):
                letras_acertadas[index] = letra
      **  index = index + 1**

        print(letras_acertadas)
----------------------------------------------------------
                        3º exemplo  AQUI O INDEX ALINHA AO WHILE
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()):
                letras_acertadas[index] = letra
index = index + 1

        print(letras_acertadas)
1 resposta

Olá, tudo bem?

Respondendo sua pergunta resumidamente,utilizando o primeiro trecho de código de exemplo, a linha index = index +1 será executada dentro do fluxo do For, e não do IF. Abaixo deixei a resposta sobre os outros exemplos. Abraços.

Uma dica que ajuda a identificar o comportamento de uma variável, é utilizar o print(). Nesse caso, o print(index) após a linha "index = index + 1", ou um print("passei por aqui") assim você saberá a evolução do valor de index e como foi seu comportamento.

O comando, irá respeitar a hierarquia de sua indentação.

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

Nesse primeiro caso, o comando ** esta logo abaixo do If, ou seja, o comando está indentado ao for. O que faz com que no exemplo 1, o comando seja executado no fluxo do for, ou seja, a condição do IF sendo verdadeira ou não, irá executar o comando sinalizado da mesma forma (index = index + 1)

No exemplo 2, a linha do index, está abaixo do for, logo, está indentada ao while. O que faz com que no exemplo 2, o comando seja executado no fluxo do While.

No exemplo 3, a linha do index, está abaixo do while, logo, não está indentada a nada, posicionada no fluxo principal do código. O que faz com que no exemplo 3, o comando seja executado fora do fluxo do While (talvez até pode dar algum erro, ou o print ali abaixo da linha citada, não ser executado dentro do while, pois agora aquele print estará indentado a linha do index, e não mas ao while diretamente).

Caso a explicação tenha ficado confusa, só sinalizar que a gente melhora kkkkkk

Abraços!