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

Dúvida sobre inclusão das letras

Olá ! Esse é o código completo:

def jogar():
    print("********************************")
    print("Bem vindo no jogo de Forca *****")
    print("********************************")

    palavra_secreta = "banana"
    letras_acertadas = ["_","_","_","_","_","_"]

    Enforcou = False
    Acertou = False
    print(letras_acertadas)
#Enquanto True e True (enquanto não enforcou-se e não acertou)

    while (not  Enforcou and not Acertou):

        chute = input("Qual letra deseja chutar?")
        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("Fim do jogo")
if(__name__=="__main__"):
    jogar()

Confesso que não entendi muito bem como são inseridas as letras dentro da lista. Entendi o while que irá prosseguir enquanto não se enforcou ou acertou o valor, que irá retirar os espaços da entrada do usuário. Então entra no For :

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

    index=index+1

print(letras_acertadas)

Ele irá conferir em cada caractere (letra) da string : palavra_secreta se o Chute em maiúsculo é igual ao Caractere maiúsculo. Se for igual, letras_acertadas[index] = letra Vai guardar a informação de que o caractere está inserido na lista em uma dada posição. (## aqui não ficou claro pra mim como é feito essa adição , já que não tem o .append) Vai adicionar mais um ao index que é para percorrer toda a string e saber a posição da letra achada ( ## tenho dúvida quanto a isso aqui acho) No fim ele vai printar a variável letras_acertadas que foram inseridas na lista. Esse final de raciocínio é que eu acredito que tenho maior dúvida, se alguém puder descrever melhor ou apontar onde errei no raciocínio, agradeço. Valeu !!

3 respostas
solução!

Lucas, eu acho que vc está confundindo alguns conceitos e é bastante natural quando é iniciante.

Vc não usaria append pq não faria sentido algum. O append adiciona um item ao final da lista, e isso não é o que vc deseja.

O professor utiliza :

letras_acertadas[index] = letra

E ainda complementa fazendo a soma do INDEX a cada repetição no loop, correto?

Isso quer dizer que:

A cada repetição, que vai ser do início até o final do tamanho da palavra, o programa testa: existe uma letra que é igual ao meu chute?

Se sim, sobrescreva essa letra com o valor do chute. Senão, continue testando para ver se encontra mais algum chute ali dentro.

Por isso vc tbm precisa incrementar esse index. Para que seus testes sejam realizados até o final da palavra.

Olha, eu respondi uma pergunta no fórum esclarecendo a função do INDEX e como essa "magica" é feita. Talvez seja interessante para vc dar uma conferida:

https://cursos.alura.com.br/forum/topico-uma-duvida-de-um-mero-padawan-220255

Obrigado, ficou um pouco mais claro !

Que bom, Lucas. Seja sempre consistente nos teus estudos que você vai pegando as nuances da coisa com o tempo.