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

Letra é da biblioteca?

no caso letra e uma palavra da biblioteca do python ? por que não informamos ele em nem um momento

def jogar():
    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    palavra_secreta = "banana"

    enforcou = False
    acertou = False

    while(not enforcou and not acertou):
      chute = input('qual letra :')
      for letra in palavra_secreta:
          if(chute == letra):
             print(chute)

      print("jogando...")


print("Fim do jogo")


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

Oi fabrício, nesse caso não. letra é uma variável local do laço for. Um laço for funciona apenas em objetos que implementem o protocolo iterator. No caso, palavra_chave sendo uma string implementa este protocolo.

Esses objetos possuem um iterador, e nesta linha

for letra in palavra_chave:

estamos atribuindo esse iterador a variável letra (na verdade o Python está fazendo isso por debaixo dos panos) que apenas vai existir dentro desse laço for. por esse motivo podemos dar o nome que quisermos.

não sei se ficou claro mas espero ter ajudado.

Ficou claro minha duvida é tipo o "python entende o" letter como letra ? e considera ele como uma função "letra" por que no codigo anteriormente não falamos nada sobre a palavra "letra ele então considera uma função de pegar ou usa a letra de uma determinada função?

solução!

Oi fabrício, não entendi a parte do letter como letra?.

Vou tentar explicar novamente e continue perguntando se a explicação ainda estiver confusa.

letra não é palavra reservada do Python. O interpretador vai processar letra como uma variável local do laço for, ou seja, ela é inicializada na declaração do laço (por este motivo não precisamos iniciá-la anteriormente).

O Python está atribuindo o iterador (que eu comentei antes) a variável letra nesta linha:

for letra in palavra_chave:

Por baixo dos panos o Python chama a função iter de palavra_chave, e seu retorno é um iterador. Quer dizer que ele tem um método next que chama o próximo até não existir mais elementos em palavra_chave - quando isso acontece ele pára.

Isso funciona já que palavra_chave é uma string e implementa o protocolo Iterator.

você pode checar mais na documetação: https://docs.python.org/3/library/stdtypes.html#typeiter

Perfeito o q me bugou ele por a letra como "letra botei tudo como xletra so para nao bugar kk cmo um variavel em si