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

Como criar uma lista que salve todas as letras chutadas na rodada de forca?

Eu quero criar uma lista, em que cada rodada do meu jogo da forca salve a letra que eu já chutei

eu tentei usar:

letras_chutadas = []
for i in chute:
    letras_chutadas.append(i)
    print(letras_chutadas)

mas me retorna somente a letra da rodada, como posso arrumar isso para aparecer a letra de todas as rodadas?

6 respostas

Olá Érica,

Poste o seu código inteiro aqui para darmos uma olhada.

Claro segue o trecho do código em questão (não deixa inteiro)

import random

def jogar(): imprime_mensagem_abertura()

nivel = (input("Escolha o nível \n"
                  "Sendo 1- Fácil 2- Médio 3- Difícil\n"
                  "\n"
                  "Qual sera o tamanho do desafio?: "))

if (nivel == "1"):
    palavra_secreta = carrega_palavra_secreta_facil()
elif (nivel == "2"):
    palavra_secreta = carrega_palavra_secreta_medio()
else:
    palavra_secreta = carrega_palavra_secreta_dificil()

letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
print(letras_acertadas)

enforcou = False
acertou = False
erros = 0

while (not enforcou and not acertou):

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

    letras_chutadas = []
    for i in chute:
        letras_chutadas.append(i)
        print(letras_chutadas)

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



    enforcou = erros == 7
    acertou = "_" not in letras_acertadas

    print(letras_acertadas)



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

Olá Érica,

Coloca a linha abaixo fora do while():

letras_chutadas = []

Você está inicializando a variável cada vez que o código entra no while().

André em qual lugar exatamente?

tentei em diversos lugares e não me traz uma lista de palavras já usadas no chute.

Quero que no inicio de cada rodada fale:

Lista=[c/ as palavras de chute] chute = input("Qual letra?\n")

Ai a pessoa só chuta as palavras que ainda não foi usada.

Queris só isso rs

Mas sempre vem uma lista com somente o chute atual, ou nem aparece nada

Colocando logo acima do while() não funciona?

solução!

Oiii pessoal, tudo bem?

Érica, para que possamos guardar em uma lista as letras que já foram chutadas precisamos inicializar a lista vazia fora do laço while, pois estando dentro do laço de repetição, a cada vez que ele se repetir a lista voltará a ser vazia. Por esse motivo é necessário inicializarmos a mesma fora do laço de repetição.

Posterior a isso, precisamos em cada iteração adicionar nesta lista a letra que foi chutada e fazemos isso com o método append. Agora, que sempre guardamos um valor nessa lista, podemos printá-la. Em código fica assim:

import random

def jogar(): 


    palavra_secreta = carrega_palavra_secreta()

    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)

    enforcou = False
    acertou = False
    erros = 0

    letras_chutadas = [] # iniciando a lista vazia fora do laço

    while (not enforcou and not acertou):

        chute = input("Qual letra?\n")
        chute = chute.strip().upper()
        letras_chutadas.append(chute) # adiciona a letra chutada na lista

        print(f'Letras chutadas: {letras_chutadas}') # printa as letras que foram chutadas

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


        enforcou = erros == 7
        acertou = "_" not in letras_acertadas

        print(letras_acertadas)

Resultado:

image

Qualquer dúvida é só falar. Estou a disposição. Abraços e bons estudos!