2
respostas

Dúvida no trecho: letras_acertadas[index] = letra

Olá pessoal,

A pergunta pode parecer confusa, mas espero que entendam meu dilema. rs.

Estou tendo uma certa dificuldade no entendimento do trecho letras_acertadas[index] = letra

Compreendo que a index é 0 e a palavra "banana" trata-se de uma str com 06 posições (b = 0 ; a = 1 ; n = 2 ; a = 3; n = 4 ; a = 5).

Tambem compreendo que o programa está fazendo uma leitura/varredura das posições onde a letra digitada no input e imprimindo somente a letra na posição a qual ela se encontra na palavra (se digitar a letra existente).

Mas o que exatamente acontece neste trecho? Ela quem é responsável pela substituição da letras_acertadas = ["","","","","",""] ? E na sequencia ao digitar print(letras_acertadas) ela imprime nas posições onde as letras estão posicionadas? print(letras_acertadas).

def jogar(): print("") print("Bem vindo no jogo de forca!") print("")

palavra_secreta = "banana" letras_acertadas = ["","","","","",""]

enforcou = False acertou = False

print(letras_acertadas)

while(not enforcou and not acertou):

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

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

print(letras_acertadas)

if(name == "main"): jogar()

2 respostas

Vamos ver se eu consigo explicar:

Quando o usuário dá um chute, por exemplo, a letra A, o laço for vai percorrer cada uma das letras da palavra secreta.

Quando chega na estrutura IF, ele vai verificar se naquela posição, usando o array que você comentou na sua dúvida (b = 0 ; a = 1 ; n = 2 ; a = 3; n = 4 ; a = 5), o que vai entrar no verdadeiro (ou seja, tem a letra), nas posições 1, 3 e 5 no exemplo da letra A.

Dentro desse IF, o que ocorre é uma substituição do _ pela letra A, simplesmente pela atribuição de um novo valor. A letra que estava naquela posição do array letra, passa para o array letras_acertadas com essa atribuição de valor.

Espero ter ajudado =)

Opa Alex, você me ajudou bastante. Não tinha olhado por essa perspectiva.

Mas o papel exato do deste trecho abaixo é interpretada da maneira abaixo?

index = 0for letra in palavra_secreta:if(chute.upper() == letra.upper()):

letras_acertadas[index] = letra #letras_acertadas[0,1,2,3,4,5] = chute

index = index + 1

print(letras_acertadas) # a letras_acertadas passa a ter atribuido o valor do chute na posição em que a letra existir exemplo abaixo (se digitar "a"):

["","chute","","chute","_"chute"]

["","a","","a","_","a"]