Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Essa foi minha solução, criei mais um if e dei um break, else: continue

def jogar():

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

    palavra_secreta = "banana".upper()
    letras_acertadas = ["_", "_", "_", "_", "_", "_"]
    letras_chutadas= []

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while (not acertou and not enforcou):

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

        if(chute in letras_chutadas):
            print("Voce ja chutou essa letra, tente outra diferente")
            continue

        if (chute in palavra_secreta):
            index = 0
            for letra in palavra_secreta:
                if (chute == letra):
                    letras_acertadas[index] = letra
                index += 1
        else:
            erros += 1
            print("voce errou, ainda tem {} tentativas".format(erros - 6))
            letras_chutadas.append(chute)


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

        if(erros == 6):
            break
        else:
            continue


        if (acertou):
            print("Parabéns você acertou a palavra e venceu o jogo")
        else:
            print("Melhore seu raciocínio")


    print("Fim do jogo")


if(__name__ == "__main__"):
    jogar()
1 resposta
solução!

Olá Estevão, tudo bem com você?

Meus parabéns pela implementação do código e por ir além do proposto na Aula, fico feliz que você tenha compartilhado seu código com a comunidade do fórum. Gostaria de aproveitar a oportunidade e deixar algumas dicas de implementação do código.

Atualmente, quando um usuário erra uma letra, a mensagem informando a quantidade de tentativas restante está informando um número negativo de tentativas, por exemplo: "você errou, ainda tem -5 tentativas". Para que o número informado seja positivo, basta multiplicar o resultado da subtração do erros - 6 por -1, o código ficará como apresentado abaixo.

print("você errou, ainda tem {} tentativas".format((erros - 6) * -1))

Uma segunda dica que gostaria de deixar, será a respeito do uso da estrutura condicional if (acertou) / else: após a adição das cláusulas break e continue. Note no código abaixo que, a estrutura condicional if (acertou) / else: não será executada em nenhum momento, já que ao executar o break do if(erros == 6): o laço repetição é encerrado e ao executar o continue presente no else anterior é iniciado uma nova iteração do laço de repetição.

if(erros == 6):
    break
else:
    continue

if (acertou):
    print("Parabéns você acertou a palavra e venceu o jogo")
else:
    print("Melhore seu raciocínio")

Para fazer uso da segunda estrutura condicional, if (acertou) / else:, você pode deixá-la fora do laço de repetição while assim, com o encerramento do laço essa estrutura condicional será lida e executada. Para isso, basta selecionar o conjunto de código presente na estrutura condicional, if (acertou) / else: e pressionar + uma vez.

Peço que verifique se as propostas acima fazem sentido para o seu projeto, caso queira aplicá-las, após as mudanças, salve o arquivo antes de executá-lo.

Código completo com as mudanças aplicadas

def jogar():

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

    palavra_secreta = "banana".upper()
    letras_acertadas = ["_", "_", "_", "_", "_", "_"]
    letras_chutadas= []

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while (not acertou and not enforcou):

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

        if(chute in letras_chutadas):
            print("Voce ja chutou essa letra, tente outra diferente")
            continue

        if (chute in palavra_secreta):
            index = 0
            for letra in palavra_secreta:
                if (chute == letra):
                    letras_acertadas[index] = letra
                index += 1
        else:
            erros += 1
            print("você errou, ainda tem {} tentativas".format((erros - 6) * -1))
            letras_chutadas.append(chute)


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

        if(erros == 6):
            break
        else:
            continue

    if (acertou):
        print("Parabéns você acertou a palavra e venceu o jogo")
    else:
        print("Melhore seu raciocínio")

    print("Fim do jogo")


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

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Espero ter ajudado. Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!