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?
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?
Oi Allan, pode colar a parte relevante do código aqui pra darmos uma olhada por gentileza?
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!