Considere o código em Python 3 a seguir.O resultado da execu...
O resultado da execução desse código será
Comentários
Veja os comentários dos nossos alunos
Em python, o comando AND é verificado antes de OR
Então fica:
(A ou B) e not C
Not C= True
(AouB) e True
A=verdadeiro
B=falso
True e True= True
Tem de conhecer o que o Python considera Falso e Verdadeiro em uma sentença lógica
--> a or b and not c
a = x = 0 (False/Falso)
b = y = [1, 2] (True/Verdadeiro) -> objetos não-vazios
c = z = False(False/Falso)
Substituindo:
False or True and True -> False or True -> True
Fato interessante:
bool(booleanos) em Python é subclasse de inteiros pode visualizar o Method Resolution Order da classe bool pelo método "bool.mro()"
Teste: 2**False e 2**True ou 2*False e 2*True
Outro fato interessante é como um objeto pode ser falso? Pelo dunder method/ special method __len__ ou __bool__, mas se o __bool__ não tiver sido implementado o __len__ vai ser usado.
E se a classe não implementa nada e for só um objeto? E verdadeiro tb seu valor lógico.
Continuarei em outro comentário...
[Continuando]
Código para visualizar melhor com exemplos de diferentes implementações
"""
class exemplo1:
...
class exemplo2:
def __len__(self):
return 0
class exemplo3:
def __len__(self):
return 1
class exemplo4:
def __len__(self):
return 0
def __bool__(self):
return True
ex1 = exemplo1()
ex2 = exemplo2()
ex3 = exemplo3()
ex4 = exemplo4()
cont = 1
for i in ex1, ex2, ex3, ex4: print(f"ex{cont}\n", "Valor lógico: Verdadeiro" if i else "Valor lógico: Falso", "\n"); cont+=1
"""
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo