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

Por qual razão o index não funciona?

Olá, estava vendo a vídeo aula e na hora em que fui escrever o código, reparei que caso eu colocasse o valor index = index + 1, na mesma indentação em que a linha letras_acertadas[index] = letra, ele parava de retornar as letras acertadas na ordem correta, alguém poderia explicar o motivo disso acontecer?

def jogar():
    print('JOGO DA FORCA!')

    palavra_secreta = "banana".upper()
    letras_acertadas = ['_', '_', '_', '_', '_', '_']

    enforcou = False
    acertou = False

    print(letras_acertadas)

    while (not enforcou and not acertou):

        chute = input('Digite uma 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)

    print('-'*15)
    print('Fim de jogo!')

if (__name__ == '__main__'):
    jogar()
2 respostas
solução!

Porque no loop for você quer percorrer cada letra da palavra_secreta, e se o CHUTE for igual a LETRA, você quer que ele substitua o " _ " pela letra NA MESMA posição que a letra estaria na palavra. Ex: AGUA : _ _ _ _ , você chuta U, então deve sair _ _ U _

Quem define qual a "posição" da letra, é o INDEX, então, se você deixar o index = index + 1 na mesma indentação do IF, o index sempre será 0 até que você acerte uma letra, e no exemplo acima, ficiaria U _ _ _ , e se você depois chutasse A, ficaria U A A _

Já quando a incrementação está fora da indentação do IF, o INDEX acompanha a posição da letra contida em PALAVRA_SECRETA, independente se você acertou ou não, e aí tudo funciona como deveria funcionar.

Aah entendi agora, muuuito obrigado, ótima explicação!