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

Aula 03 - laço com for e letras_acertadas[index]

Apesar de algumas explicações já estarem presentes aqui no fórum, ainda tenho uma dúvida:

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

    enforcou = False
    acertou = False

    print(letras_acertadas)

    while(not enforcou and not acertou):

        chute = input("Qual 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("Fim do jogo")

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

O que o "for" faz? O "for" só entra em ação se o chute estiver na palavra? Se não, se eu errasse a letra, não entraria em um loop infinito no "for"? O que faz com que eu saia do "for" após um chute e abra o input de novo? Tenho esse problema haha só consigo entender alguma coisa se entender desde o princípio.

Além disto, tentei fazer o laço "for" da seguinte forma:

        for chute in palavra_secreta:
            letras[index] = chute
            index = index + 1
        print(letras)

E deu errado, qualquer caractere que eu colocava no input, até mesmo uma vírgula, ou também alguma letra correta, ele mostrava:

['b', 'a', 'n', 'a', 'n', 'a'] Qual letra? (e assim sucessivaente)

Ou seja, qualquer caractere que eu colocasse no input ele já mostrava a palavra inteira. Por que deu errado?

2 respostas
solução!

"O que o "for" faz? " O "for" é um looping baseado na condição imposta a ele

" O "for" só entra em ação se o chute estiver na palavra?" Não, neste codigo, enquanto estiver dentro do looping "while" o programa sempre vai entrar no "for"

"Se não, se eu errasse a letra, não entraria em um loop infinito no "for"?" Não, o programa vai sempre sair do "for" quando ele fizer toda a varredura (caractere por caractere) da "palavra_secreta"

"O que faz com que eu saia do "for" após um chute e abra o input de novo?" Perceba que o for está identado dentro do "while", então, quando ele sai do for, ele ainda continua dentro da condição do while, e continua o looping while passando assim denovo pelo input denovo.

Na ultima pergunta, você esqueceu da condição "if" que faz a comparação. E na linha do "for" voce colocou "chute" ao invéz de "letra"

Espero ter ajudado, também estou aprendendo Python.

Muito obrigado José, a explicação ficou muito clara