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

Sem atribuir as letras nas posições

Bom dia, fiz o código de acordo com as aulas até o capítulo 5, só que no vídeo, cada letra digitida da palavra vai pra sua posição correta, dando vitória e preenchendo de acordo, porém, o meu só muda a primeira letra, baixei o arquivo do professor e também está assim. Por exemplo: a palavra banana, se eu digito B, fica B _ _ _ _ _, mas se a seguir digito A, fica assim: A _ _ _ _ _. Deveria funcionar como no vídeo. O que não entendi ou deixei de fazer?

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

    palavra_secreta = 'banana'.upper()
    letras_acertadas = ['_' for letra in palavra_secreta]

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while(not enforcou and not acertou):

        chute = input('Qual letra?')
        chute = chute.strip().upper()

        if(chute in palavra_secreta):
            index = 0
            for letra in palavra_secreta:
                if(chute == letra):
                    letras_acertadas[index] = letra
            index += 1

        else:
            erros += 1

        enforcou = erros == 6
        acertou = '_' not in letras_acertadas
        print(letras_acertadas)

    if(acertou):
        print('Você ganhou!')
    else:
        print('Você perdeu!')
    print('Fim de Jogo!')

if(__name__ == '__main__'):
    jogar()
2 respostas
solução!

Olá Leonardo, tudo bem? A indentação da variavel index está errada. Index deveria estar no mesmo nível de indentação do if.

index = 0
            for letra in palavra_secreta:
                if(chute == letra):
                    letras_acertadas[index] = letra
                index += 1

O variável index precisa ser incrementada logo após a verificação do if. No código atual, a variável não sofre o incremento de +1 pois está fora do laço for.

Espero ter ajudado.

Abraços

Era isso mesmo! Nunca iria imaginar que um tab a mais iria dar isso na função. Muito obrigado!