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

Uma dúvida de um mero padawan

Qual a função do index(), juro que o tentei compreender o professor na elaboração do jogo forca no Python 3 e não entendi. Alguém explica?

3 respostas

Oi Allan, pode colar a parte relevante do código aqui pra darmos uma olhada por gentileza?

solução!

Olá, jovem Padawan!

Eu não sou Jedi ainda, mas acho que posso tentar te guiar em direção à Força. (hehe meu Deus, que coisa mais nerd de se dizer!)

Enfim, vamos aproveitar o código do Nico do jogo da forca:

def jogar():

    print("################################")
    print("###bem vindo ao jogo de forca###!")
    print("################################")

    palavra_secreta = "tangerina".upper()
    letras_acertadas = []

    for letra in palavra_secreta:
        letras_acertadas.append("_")

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while (not enforcou and not acertou):

        chute = input ("Qual letra deseja escolher :  ")
        chute = chute.strip().upper()
        index = 0 

        if (chute in palavra_secreta):
            for letra in palavra_secreta:
                if (letra == chute):
                    letras_acertadas [index] = letra
                index += 1
        else:
            erros += 1
        enforcou = erros == 6
        acertou = "_" not in letras_acertadas
        print (letras_acertadas)

        print("Jogando")
    if (acertou):
        print ("Você ganhou!")
    else:
        print("Você perdeu!")

    print("Fim de jogo!")

if (__name__ == "__main__"):
    jogar()

O índex é apenas um numero.

Inicialmente, ele tem o valor de zero, pois você atribuiu dessa forma : index = 0. (SOMENTE quando você constroi a logica, com o auxilio do while para estabelecer limites e do if,for para demais condicoes, é que esse index toma o valor de POSICAO de cada item (letra) dentro da palavra. Entende que seria o mesmo que dizer que letras_acertadas [0] = T No caso do nosso codigo acima, você estaria se referindo à letra T, na posição zero, da palavra TANGERINA).

Na terceira aparição do index ele toma um status do que chamamos na programação de CONTADOR. (index = index + 1) Por que precisamos fazer isso? Bem, sua intenção nesse código é fazer a logica percorrer TODA a sua palavra secreta e identificar se o chute está lá dentro, correto? se você fizer um teste simples (para provar o que estamos falando) e retirar o contador (index=+1) o que ocorre? Ocorre a seguinte situação:

Qual letra deseja escolher :  t
['T', '_', '_', '_', '_', '_', '_', '_', '_']
Jogando
Qual letra deseja escolher :  a
['A', '_', '_', '_', '_', '_', '_', '_', '_']
Jogando
Qual letra deseja escolher :  n
['N', '_', '_', '_', '_', '_', '_', '_', '_']
Jogando
Qual letra deseja escolher :  g
['G', '_', '_', '_', '_', '_', '_', '_', '_']

Percebeu? O programa roda, não acusa erro de sintaxe nem nada. MAS, ele não faz o que você deseja. Quando você não faz index incrementar, o programa vai te entregar SEMPRE o index = 0, que foi o que você estipulou la em cima, na primeira aparição dele. Então, quando roda, o resultado vai te entregar as letras que existem dentro da palavra, mas sempre na posição inicial. Ela vai sobrescrevendo aquela posição a cada execução de um acerto. Sacou a relevância da lógica atrelada ao index? O index, em si mesmo, é apenas um NUMERO. O que importa é o que você faz com esse numero dentro das lógicas que regem o teu programa. Então, recapitulando: Index é um numero. Após camadas de lógica ele representa uma POSIÇAO Mais camadas de lógica, passa a representar um CONTADOR. Bem, eu espero que tenha clareado algumas coisas pra ti, Jovem Padawan. Sugiro que você leve esse código para teu editor e treine, modifique o valor do index, cautela para não passar o tamanho total da palavra e veja os resultados. Assim a coisa vai ficar menos abstrata e você vai poder visualizar melhor o que cada componente faz no código.

Que a Força esteja com você!

Foi exatamente nesse programa forca q me pegou desprevenido, passou tão rápido q do nada apareceu index e fiquei sem entender. Muito interessante q fizeram um joguinho simples feito Termo e faz muito sucesso quase só com isso. Enfim, muito obrigado Rosi!