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

Condições do While

Na aula de "Game loop" da parte 2 do python, o instrutor constroi a seguinte lógica:

acertou = "False"
enforcou = "False"

while(not enforcou and not acertou):
    print("Jogando...")

e a partir dessa lógica eu fiquei pensando nas possibilidade e acabei tendo um dúvida quando ao funcionamento do "while" combinado com o "and", pois uma vez que uma dessas variaveis passe a ser "True" o algoritimo sai do looping. ex:

acertou = "False"
enforcou = "False"

a = 1

while(not enforcou and not acertou):
    print("Jogando...")
    a = a + 1

    if(a > 3):
        acertou = True

Dessa forma forma não entendi o porquê do looping ser interrompido se apenas uma variável atendeu o critério de ser verdadeira. Isso ocorre por quê? Outra dúvida que me surgiu foi, caso eu declarasse as variáveis "acertou" e "enforcou" inicialmente como "False", o algoritmo nem entra no looping. ex:

acertou = "True"
enforcou = "True"

while(not enforcou and not acertou):
    print("Jogando...")
5 respostas

Olá Rafael,

Atenção, as atribuições que você está colocando nas variáveis estão incorretas. Você passou um string(texto) 'False' ao invés de atribuir False (sem aspas) . Por isso não está entrando no loop, o 'False' está sendo interpretado como um texto, não como uma lógica booleana.

O correto seria:

acertou = False
enforcou = False

while(not enforcou and not acertou):
    print("Jogando...")

Em relação ao while e o and, se lê da seguinte maneira. ''While not acertou (Enquanto acertou for igual a False) and (E) not enforcou (enforcou for igual a False)". Basicamente enquanto não acertou E não enforcou, o jogo fica em loop. (repare nesse 'E', as duas condições tem que ser False por causa do not, a partir do momento que uma se torna verdadeira, ele sai do loop.

É a mesma logica que, eu só sobrevivo, se tiver água E comida, se faltar um dos dois, eu morro. kkkkk perdão pela analogia.

Se tiver alguma dúvida, estou à disposição.

solução!

O resultado da expressão (A and B) será True apenas se as duas condições forem satisfeitas: (True and True) como mostra a tabela abaixo.

Por baixo dos panos, a condição do loop continuar existindo pode ser expressa como while True. No momento que você tem while False o loop não existirá mais.

@Nathan Souza Alvarenga entetndi a analogia e achei bem didática kkkk! Mas teste o código sem as aspas e mesmo assim o algorítmo não entra no looping. isso ocorre porquê a condição do while precisa ser True para o looping ocorrer? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Rafael, exato o while precisa ser True para iniciar.

Pensa o seguinte, não faz sentido iniciar o código com enforcou = True e acertou = True, quando o jogo começa vc ainda não enforcou nem acertou. Por isso se iniciar o dois como False o while vai iniciar.

  1. inicio do jogo
  2. enforcou? False (pelo menos, não enforcou ainda kkk)
  3. acertou? False (ainda não acertou tbm)

Conforme a tabela que o Filipe mandou, o While tem que ser True. você pode até fazer esse teste pra fixar, umas das maneiras de fazer um loop infinito é escrever while True

from time import sleep

while True:
    print('esse programa é infinito')
    sleep(1) #pausa de 1 segundo

print('fim do programa')

Esse código vai ficar rodando pra sempre e nunca vai ser executado o print('fim do programa'), se vc trocar para while False:, vai ver que o print('fim do programa') vai ser executado diretamente.

Isso mesmo, Não se pode colocar aspas em "True" e "False".