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

[Dúvida] Quantas tentativas faltam + dúdiva

Além das tentativas, tambem tentei insirer uma condição que não contaria como erro as palavras repetidas, porem essa última não funcionou.Caso alguem possa me ajudar, ficarei grata.

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 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 = index + 1
        else:
            erros += 1
            print(f'errou, faltam {abs(erros - 6)} tentativas.')

        if chute in letras_chutadas:
            print('Essa letra já foi fui escolhida, tente outra.')
            letras_chutadas.remove(chute)
            erros -= 1

        letras_chutadas.append(chute)

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

    if acertou:
        print('Você ganhou!')
    else:
        print('Você perdeu :(')
    print("Fim do jogo")

if(__name__ == "__main__"):
    jogar()
6 respostas
solução!

Oi, Amanda

Modifiquei o: if chute in letras chutadas:


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 enforcou and not acertou):

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

        if chute in letras_chutadas:
            print('Essa letra já foi fui escolhida, tente outra.')
            continue

        if chute in palavra_secreta:
            index = 0
            for letra in palavra_secreta:
                if(chute == letra):
                    letras_acertadas[index] = letra
                index = index + 1
        else:
            erros += 1
            print(f'errou, faltam {abs(erros - 6)} tentativas.')

        letras_chutadas.append(chute)

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

    if acertou:
        print('Você ganhou!')
    else:
        print('Você perdeu :(')
    print("Fim do jogo")

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

Olá, boa noite Amanda, o único problema era que a posição das verificações estava errada, fazendo com que ele aumentasse o erro em 1 e antes de diminuir no outro código, a mensagem já era exibida. Deste jeito abaixo funciona certinho. Espero ter ajudado!

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 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 = index + 1
        elif chute in letras_chutadas:
            print('Essa letra já foi fui escolhida, tente outra.')
        else:
            erros += 1
            print(f'errou, faltam {abs(erros - 6)} tentativas.')

        letras_chutadas.append(chute)

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

    if acertou:
        print('Você ganhou!')
    else:
        print('Você perdeu :(')
    print("Fim do jogo")

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

Obrigado pela ajuda mas eu já havia tentando esses dois métodos e ambos ainda contam o erro das palavras já escolhidas.

Não! Não contam as letras repetidas

Você não testou

Mas eu escrevi essa forma antes de mandar a dúvida, desse modo o código ainda não deixa de contar as letras repetidas :( Por isso eu criei a lista 'letras_chutadas', minha ideia é fazer o código colocar as letras já escolhidas dentro dessa lista e caso ela seja escrita novamente o programa não conta o erro. Eu tentei usar tanto dentro quando fora essa condição mas continua apresentando erro.

forca