Problem with my game of Forca - Python

1
print("*** Jogo da forca ***\n")
print("*** Feito por Igor! ***\n")
palavraSecreta = input("Entre com a palavra secreta: ")
letrasDescobertas = []
percorrer = 0
contador = int(input("Entre com o número de chances: "))

for i in range(len(palavraSecreta)):
    if palavraSecreta[i] == " ":
        letrasDescobertas.append(" ")
    else:
        letrasDescobertas.append("-")
print("".join(letrasDescobertas))

acertou = False

while acertou is False:
    letra = input("Digite a letra de seu chute: ")

    for i in range(len(palavraSecreta)):
        if letra == palavraSecreta[i]:
            letrasDescobertas[i] = letra
            print("".join(letrasDescobertas))

    if letra not in palavraSecreta:
        percorrer += 1
        print("Chances restantes:", contador - percorrer)
        if percorrer == contador:
            print("Você perdeu!")
            break

    if "-" not in letrasDescobertas:
        print("Você ganhou com %d erros!" % percorrer)
        acertou = True

My riddle is pao: If I type d, f, g. It should show the wrong letters like this: d, f, g. But the output I have with this code I made is only the last letter entered. For example: I typed d, will appear d. I typed f, only f will appear, instead of d, f. How to pack? Thanks

    
asked by anonymous 21.05.2017 / 04:31

1 answer

1

Well, now I really understood what the problem was and now I edited it to fix it.

Follow the code:

Pay attention to what I did, because even I do not know what I really did. But the result is perfect.

print("*** Jogo da forca ***\n")
palavraSecreta = input("Entre com a palavra secreta: ")
palavraSecreta = palavraSecreta.split(' ')

letrasDescobertas = []

for i in palavraSecreta:
    for b in i:
        letrasDescobertas.append('_')
    letrasDescobertas.append(' ') # A cada intervalo é adicionado um espaço

acertou = False

while acertou is False:
    letra = input("Digite a letra de seu chute: ")
    x = 0
    for i in palavraSecreta: # Não precisa por zero no começo, o padrão é sempre zero

        for b in i:
            if letra == b:
                if letrasDescobertas[x] == ' ': # É preciso incrementa aqui por que senão o espaço vai ser substituído 
                    x += 1
                letrasDescobertas[x] = letra
            x += 1
        x += 1 # Quando ele muda para o outra palavra é necessário incrementar +1

    print(''.join(letrasDescobertas))


    if '_' not in letrasDescobertas: # Mudei isso aqui também, ficou melhor.
        acertou = True

print("Parabéns!")

Output:

>>> *** Jogo da forca ***
>>> 
>>> Entre com a palavra secreta: um teste
>>> Digite a letra de seu chute: u
>>> u_ _____ 
>>> Digite a letra de seu chute: m
>>> um _____ 
>>> Digite a letra de seu chute: t
>>> um t__t_ 
>>> Digite a letra de seu chute: e
>>> um te_te 
>>> Digite a letra de seu chute: s
>>> um teste 
>>> Parabéns!

Letters already used:

Add this after while acertou is False:

while acertou is False:
    letra = input("Digite a letra de seu chute: ")

    if letra in usadas: # Adicione isto
          print('\nVocê já falou essa letra!\n') # Adicione isto
          continue # Adicione isto

    usadas.append(letra) # Adicione isto

Output:

>>> *** Jogo da forca ***
>>> 
>>> Entre com a palavra secreta: antony
>>> Digite a letra de seu chute: a
>>> a_____
>>> Digite a letra de seu chute: a
>>> 
>>> Você já falou essa letra!
>>> 
>>> Digite a letra de seu chute:
    
21.05.2017 / 04:55