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

Dúvida em adicionar as letras que são erradas em print

Oi gente, alguém consegue me ajudar?

Fiz esse código no curso de python 3 pt 2 do jogo da forca e gostaria de adicionar um comando que toda vez que a pessoa errar a letra da palavra secreta, aparece a letra que a pessoa chutou em baixo. Ou seja, se ela chutou a letra D e L e estão erradas, quero que dê print das letras que já foram chutadas, ou seja D e L.

Tentei adicionar no else: print(chute), mas ele não vai adicionando as letras erradas, apenas o chute da rodada. Enfim, espero ter explicado bem kkk

Código:

import random


def jogar():

imprime_mensagem_abertura()
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
print(letras_acertadas)


enforcou = False
acertou = False
erros = 0

while(not enforcou and not acertou):

chute = pede_chute()

if(chute in palavra_secreta):
    marca_chute_correto(chute, letras_acertadas, palavra_secreta)
else:
    erros +=1
    desenha_forca(erros)
    print(chute)

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


if(acertou):
    imprime_mensagem_vencedor()
else:
    imprime_mensagem_perdedor(palavra_secreta)


def desenha_forca(erros):
    print("  _______     ")
    print(" |/      |    ")

if(erros == 1):
    print(" |      (_)   ")
    print(" |            ")
    print(" |            ")
    print(" |            ")

if(erros == 2):
    print(" |      (_)   ")
    print(" |      \     ")
    print(" |            ")
    print(" |            ")

if(erros == 3):
    print(" |      (_)   ")
    print(" |      \|    ")
    print(" |            ")
    print(" |            ")

if(erros == 4):
    print(" |      (_)   ")
    print(" |      \|/   ")
    print(" |            ")
    print(" |            ")

if(erros == 5):
    print(" |      (_)   ")
    print(" |      \|/   ")
    print(" |       |    ")
    print(" |            ")

if(erros == 6):
    print(" |      (_)   ")
    print(" |      \|/   ")
    print(" |       |    ")
    print(" |      /     ")

if (erros == 7):
    print(" |      (_)   ")
    print(" |      \|/   ")
    print(" |       |    ")
    print(" |      / \   ")

print(" |            ")
print("_|___         ")
print()

def imprime_mensagem_vencedor():
    print("Parabéns, você ganhou!")
    print("       ___________      ")
    print("      '._==_==_=_.'     ")
    print("      .-\\:      /-.    ")
    print("     | (|:.     |) |    ")
    print("      '-|:.     |-'     ")
    print("        \\::.    /      ")
    print("         '::. .'        ")
    print("           ) (          ")
    print("         _.' '._        ")
    print("        '-------'       ")

def imprime_mensagem_perdedor(palavra_secreta):
    print("Puxa, você foi enforcado!")
    print("A palavra era {}".format(palavra_secreta))
    print("    _______________         ")
    print("   /               \       ")
    print("  /                 \      ")
    print("//                   \/\  ")
    print("\|   XXXX     XXXX   | /   ")
    print(" |   XXXX     XXXX   |/     ")
    print(" |   XXX       XXX   |      ")
    print(" |                   |      ")
    print(" \__      XXX      __/     ")
    print("   |\     XXX     /|       ")
    print("   | |           | |        ")
    print("   | I I I I I I I |        ")
    print("   |  I I I I I I  |        ")
    print("   \_             _/       ")
    print("     \_         _/         ")
    print("       \_______/           ")

def marca_chute_correto(chute, letras_acertadas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if (chute == letra.upper()):
            letras_acertadas[index] = letra
        index += 1

def pede_chute():
    chute = input("Qual letra? ")
    chute = chute.strip().upper()
    return chute

def imprime_mensagem_abertura():
    print("**********************************")
    print("***Bem vindos ao jogo de forca!***")
    print("**********************************")

def carrega_palavra_secreta():
    arquivo = open("palavra.txt", "r")
    palavras = []

for linha in arquivo:
    linha = linha.strip()
    palavras.append(linha)

arquivo.close()

numero = random.randrange(0, len(palavras))
palavra_secreta = palavras[numero].upper()
return palavra_secreta

def inicializa_letras_acertadas(palavra):
    return ["_" for letra in palavra]


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

Oi, Camila! Tudo bem? Pensei em fazer uma lista que conforme o jogador chuta e erra, ela armazena o erro e printa.

Olá Igor, tudo bem? Obrigada por responder

Então mas como faria esta lista ficar em loop? Digamos que eu faça o código:

letras_erradas = [chute]
    print (letras_erradas)

então, ai não sei como isso faria armazenar e adicionar o novo chute

Oi, Camila. Eu vi teu post ontem e fiquei pensando em como implementar. Terminei a lógica proposta hoje no meu joguinho da forca. Se quiser, posso te fornecer. (meu email está na página do meu perfil, basta deixar uma mensagem indicando "jogo da forca mostrando erros" no título)

solução!

Ola Camila, acabei de implementar no meu codigo. Segue o que fiz:

Inseri a lista no começo do código: letras_erradas = []

No seu caso na condição else basta adicionar letras_erradas.append(chute)

Obrigadaaa Bruno, arrasou!