Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

FALSE E FALSE

palavra_secreta = "banana"

enforcou = False
acertou = False


while(not enforcou and not acertou):
     
     chute = input("Qual letra? ")

    index = 0
     for letra in palavra_secreta:
         if("Encontrei a letra {} na posição {}".format(letra, index)):
             print(chute)
        index = 1 + 1
        
        
        

Gostaria de saber o motivo pelo qual colocamos enforcou e acertou, ambos como False? Não seria necessário ter algum como True?

1 resposta
solução!

Olá, Samyra! Tudo bem?

A razão pela qual as variáveis enforcou e acertou são inicializadas como False é porque, no início do jogo, o jogador ainda não se enforcou e também não acertou a palavra secreta. Essas variáveis são utilizadas no laço while para controlar a continuidade do jogo. Enquanto enforcou e acertou forem ambas False, o jogador continua jogando. Assim que uma das variáveis se tornar True, o laço é interrompido e o jogo termina.

Perceba que o while funciona enquanto a condição for True, por isso colocamos o operador not na frente das variáveis que estão False. Se o jogador acertou todas as letras da palavra secreta, a variável acertou será True, e not acertou será False. Nesse caso, o resultado de not acertou and not enforcou será False, e o loop while será interrompido, terminando o jogo. Para ficar mais fácil de compreender, vamos revisar os resultados dos operadores:

  1. Operador not: O operador not é um operador unário que inverte o valor de uma expressão booleana. Se a expressão for True, o not a tornará False, e se a expressão for False, o not a tornará True.

Possibilidades:

  • not True resulta em False.
  • not False resulta em True.
  1. Operador and: O operador and é um operador binário que realiza uma operação de conjunção. Ele retorna True somente se ambas as expressões que estão à esquerda e à direita do and forem True. Se pelo menos uma delas for False, o and retornará False.

Possibilidades:

  • True and True resulta em True.
  • True and False resulta em False.
  • False and True resulta em False.
  • False and False resulta em False.

Agora, vamos combinar o operador not com o operador and em todas as possibilidades possíveis:

  1. not True and not True: Primeiro, o not True é avaliado como False. Depois, o and é aplicado a dois False, resultando em False.

  2. not True and not False: Primeiro, o not True é avaliado como False. Depois, o and é aplicado a um False e um True, resultando em False.

  3. not False and not True: Primeiro, o not False é avaliado como True. Depois, o and é aplicado a um True e um False, resultando em False.

  4. not False and not False: Primeiro, o not False é avaliado como True. Depois, o and é aplicado a dois True, resultando em True.

A título de curiosidade, temos também o operador or, que é usado para combinar duas expressões booleanas e retornar True se pelo menos uma delas for True.

Possibilidades:

  1. True or True: O or é aplicado a dois True, resultando em True.

  2. True or False: O or é aplicado a um True e um False, resultando em True.

  3. False or True: O or é aplicado a um False e um True, resultando em True.

  4. False or False: O or é aplicado a dois False, resultando em False.

Em resumo, os operadores not, and e or são muito úteis para fazer lógica booleana. O not inverte o valor de uma expressão, enquanto o and combina duas expressões para retornar True somente quando ambas forem True e o operador or retorna True se pelo menos uma das expressões fornecidas for True. Entender esses operadores é fundamental para lidar com decisões condicionais e loops em programação.

No código que você compartilhou, a cada iteração do laço while, o jogador informa uma letra através da função input(). Em seguida, é feito um laço for para percorrer cada letra da palavra secreta. Se a letra informada pelo jogador for igual a uma das letras da palavra secreta, a mensagem é exibida. Lembrando que para que a posição esteja sendo identificada corretamente é necessário que você incremente utilizando o index = index + 1, caso contrário sempre será informado o valor de index = 1+1. Além disso, o if deve manter apenas o condicional, enquanto o print deve manter a informação a ser exibida. Ficando então dessa maneira:

while (not acertou and not enforcou):
    chute = input("Qual letra? ")
    index = 0
    for letra in palavra_secreta:
       if (chute == letra):
            print("Encontrei a letra {} na posição {}".format(letra, index))
        index = index + 1

Portanto, as variáveis enforcou e acertou são inicializadas como False para indicar que o jogo está em andamento e que o jogador ainda não se enforcou nem acertou a palavra secreta. No momento que uma dessas variáveis se tornarem True, o jogo se encerra!

Espero ter ajudado! Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!