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

[Dúvida] Duvida em relacao a variavel LETRA no jogo da forca

Boa noite Não consegui entender essa parte da variável "LETRA". De onde ela veio? Por exemplo, se eu chutasse a letra "A", como ficaria o "if(chute == letra)"? Como faço essa comparação "if(chute == LETRA)" se, pelo que entendi, a variável "LETRA" não recebe nenhum valor anteriormente? Preciso declarar a variável "LETRA" no início do código?

if(chute in palavra_secreta): index = 0 for letra in palavra_secreta: if(chute == letra): letra_acertadas[index] = letra index += 1 else: erros += 1

CODIGO COMPLETO

def jogar():
print("************")
print ("bem vindo ao jogo de forca");
print("************")

palavra_secreta = "banana".upper()
letra_acertadas = ["_","_","_","_","_","_"]

enforcou = False
acertou = False
erros = 0

print(letra_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):
                letra_acertadas[index] = letra
            index += 1
    else:
        erros += 1

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

if(acertou):
    print("Voce ganhou")
else:
    print("Voce perdeu")
print("Fim de jogo")

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

2 respostas

Bom dia,

Quando criamos o laço de repetição abaixo criamos também uma variável LETRA:

 for letra in palavra_secreta:
            if(chute == letra):
                letra_acertadas[index] = letra
            index += 1

Nesse laço a variável LETRA vai assumir cada uma das letras da PALAVRA_SECRETA, ou seja, na PALAVRA_SECRETA "BANANA" durante a execução do primeiro laço, a variável LETRA será B, na segunda, será A e assim sucessivamente até acabar a PALAVRA_SECRETA.

Espero ter ajudado.

solução!

Grande Gabriel. Tudo certo?

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

Nesse trecho de código, a variável letra assume o papel de índice dentro do laço de repetição for. Seria o equivalente a colocarmos o índice i** no lugar de **letra onde ficaria:

for i in palavra_secreta:

Como exemplo poderíamos ter a situação onde


palavra_secreta = "CAMELO"

No momento em que o código chega ao trecho for letra in palavra_secreta: o código vai iterar (percorrer) cada letra que existe na string CAMELO atribuída a variável palavra_secreta e vai fazer uma comparação com a letra que foi atribuída a variável chute e, caso a letra que está contida na variável chute seja igual a alguma letra que está na string CAMELO if(chute == letra): , a lista letra_acertadas vai substituir o caractere _** pela letra que está na variável **chute no mesmo índice que corresponde a posição da letra encontrada na string CAMELO letra_acertadas[index] = letra Como no exemplo que você deu, se fosse atribuída a variável chute a letra A*, aconteceria da seguinte forma: 1 - É atribuído a variável *index o valor 0 index = 0

2 - O programa chegaria ao trecho onde tem o laço de repetição for, pegaria a primeira letra da string CAMELO que nesse caso é a letra C** e compararia com a letra **A. if(chute == letra): Como, naturalmente não são iguais, o programa não faz a atribuição da letra escolhida a lista letra_acertadas, incrementa (adiciona) o valor 1** a variável **index index += 1 e pula para a próxima letra.

3 - Nessa situação agora, o programa pegaria a segunda letra da string CAMELO que é a letra A** e, novamente compararia com a letra **A que foi atribuída a variável chute. if(chute == letra): Nessa situação, o programa perceberia que a letra escolhida que é a letra A** é igual a segunda letra da string **CAMELO , logo ele faria a inserção da letra da string CAMELO na lista letra_acertadas no mesmo índice em que foi encontrado na string CAMELO que, nesse caso, seria o índice 1 letra_acertadas[index] = letra e depois faz outro incremento na variável index.

4 - O programa faz isso até a última letra que está na string CAMELO.

Ou seja, para cada letra que existe dentro da string atribuída a variável palavra_secreta, o programa vai comparar a letra que foi atribuída a variável chute com cada letra da palavra secreta e vai definir se realmente é igual ou não e, dependendo da situação, vai ser realizado um comando. Espero que te ajudado a entender e compreender.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software