Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Galera Estou com muita dúvida no while

def jogar(): print("*") print("Bem vindo ao jogo da 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()

"Diante do código acima. Galera me ajudem com a lógica do while, para mim se enforcou = False inicialmente e dentro do while existe um(not enforcou), como ele entra no laço????, sendo que em minha lógica o enforcou agora é verdadeiro pelo not"...não entendi, se puderem me ajudar, ficaria grato

6 respostas

estou começando em python também , posso estar errado, mas não pode ser pelo AND na condição? por que como o and verifica se as duas condições são verdadeiras e as duas são falsas os dois not false fazem sentido nesse and, mas também fiquei na dúvida a respeito

pois é aqui também tenho muita dúvida

" acertou = _ not in letras_acertadas "

Eu não sei se entendi , mas aqui

while(not enforcou and not acertou):

o programa está dizendo que enquanto ele não se enforcou , ou não acertou , o laço vai continuar , afinal , você precisa digitar mais letras para ele se enforcar , e ele sair do laço , como a um "and" , se as duas condições não forem verdadeiras , será falso

#enquanto (não enforcou e não acertou)

while(not enforcou and not acertou):

>>> a = False
>>> b = False
>>> (not a and not b)
True
>>> a = False
>>> b = True
>>> (not a and not b)
False

então se a = True and b = True , o laço continua , acho que você deve ter se confundido na questão de enforcou e acertou serem falsos , mas usando (not a and not b) , eles são verdadeiros .

Acho que não expliquei bem :/

MrLexontan obrigado por tentar explicar , a minha dúvida é que por ser verdadeiro ele não deveria para o laço????

solução

Veja bem ,

while(not enforcou and not acertou):

enquanto essa condição for verdadeira, o laço continua, não importa se enforcou e acertou são falsas , as duas juntas são verdadeiras, isso acontece pelo "and" e pelo "not". a partir do momento em que umas das duas passe a ser True, a condição

while(not enforcou and not acertou):

passa a ser falsa

>>> enforcou = True
>>> acertou = True
>>> (not enforcou and not acertou)
False

>>> enforcou = True
>>> acertou = False
>>> (not enforcou and not acertou )
False

>>> enforcou = False
>>> acertou = False
>>> (not enforcou and not acertou)
True

já se a condição não tivesse o "not"

>>> enforcou = True
>>> acertou = True
>>> (enforcou and acertou)
True

>>> enforcou = False
>>> acertou = True
>>> (enforcou and acertou)
False

>>> enforcou = False
>>> acertou = False
>>> (enforcou and acertou)
False
>>> 

Sou iniciante também, mas acho que captei onde está sua duvida.

while(not enforcou and not acertou):

esse código está informando que enquanto enforcou e acertou forem False, o laço vai continuar. Quando uma das duas condições deixar de ser verdadeira o laço para,e para tal você define quando elas vão mudar de False para True. Se ficar muito confuso, imagina os parâmetros como números para satisfazer uma condição.

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

enforcou = 0
acertou = 0

print(letras_acertadas)

while(not enforcou == 6 and not acertou == 6):

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

Nesse caso quando uma das variáveis chegasse a 6 a condição

while(not enforcou == 6 and not acertou == 6):

deixaria de ser satisfeita e o laço iria parar.