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

Dúvida nos operadores lógicos

A ideia é que enquanto o jogador "não enforcou" e "não acertou" ele pode continuar jogando. Entretanto estou tendo dificuldades pra entender esse código:

palavra_secreta = "banana"

enforcou = False
acertou = False

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

Por que "acertou" e "enforcou" são designados com valor "False" se eles recebem o "not" na condição? "not False" não seria "True"? A minha confusão vem do fato de que "acertou" e "enforcou" deveriam ser informações verdadeiras e que eu quero verificar a sua não ocorrencia para o jogo continuar, por isso o "not" no laço. Ex:

palavra_secreta = "banana"

enforcou = True
acertou = True

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

Eu sei que ta errado, mas eu não consigo entender o porquê. Sou novo na programação, e estava entendendo tudo perfeitamente até agora.

2 respostas
solução!

Olá,

entenda que todo jogo começará com acertou e enforcou como False, pois nenhuma jogada foi feita, certo?

Em relação ao while, entenda que para o Python entrar e permanecer no while a expressão avaliada precisa retornar True.

Assim, uma forma de manter o jogo rodando é avaliando se acertou e errou ainda não é false, pois essa expressão retornará True.

Além disso, semanticamente se vc perguntar nao acertou e nao errou fica melhor.

[]'s

Perfeito. Muito obrigado!