python布爾值判斷
A. python中定義變數n = 0,那麼n的布爾值是什麼
0作為布爾值使用就相當於False,非0作為布爾值使用就相當於True。
如這個例子:
n=0
#輸出是:
#0相當於False
print("0相當於True" if n else "0相當於False")
B. python-邏輯運算:not\and\or和布爾值:True\False
這東西在每一個語言都有,and or not 對應與、或、非三種邏輯運算;True和False是bool值,即真和假。
邏輯運算和布爾值經常用於if判斷語句、循環語句的條件語句。
首先作為控制條件應該是一個布爾值,即真和假——True和false。
python的內置類——布爾類,只有兩個實例:True和false。對於一般數字而言,0是False,非0是True;對於序列和容器類型,如列表、字典、字元串等,空為False,非空為True。
所以就有了這樣的用法:
輸出:1 為True
輸出: 0 為 False
輸出:a = '字元串'
這了可以看出一個實例本身可以作為控制條件,這是因為,解釋器會先把這個實例轉換為bool類型,然後根據這個bool類型執行程序。即bool(a) = True、bool(b) = False。
但是只用這樣的方式控製程序顯然不夠,比如我希望a為空,b為非空的時候,我輸出「我天下第一」,這怎麼辦?
如果不用not and or 就會寫成這樣:
輸出:我天下第一
可以把a 看成False,b看成True。
從這里我們可以看到,我們用了兩層if--else語句來判斷a為空,b為非空的情況,那麼我用邏輯運算呢?
輸出:我天下第一
一樣的:可以把a 看成False,b看成True。那麼not a and b的意思就是:not False and True
這時候就是邏輯運算符的優先順序的問題,這可以借鑒C語言的那本書《C程序設計》第五版的第92頁
!非
算數運算符
關系運算符
&& 和 ||
賦值運算符
運算優先順序從上到下,越來越低。
這是C語言里的,在python里就是:
not -------------->高
and 和 or ---------->低
所以我們先算not
於是 not False and True 就成所以了True and True這就很清楚了結果為True,所以「我天下第一」。
所以我們就可以總結出:
1.先將實例變為布爾值
2.在計算所有的not
3.根據語言特性,從左到右或者從右到左計算邏輯運算結果。
當然在python中是從左到右。
and 和 or 運算具有短路保護!什麼意思呢?看一個栗子
1 or a
or的左邊是1也就是True,根據or的運演算法則,只要有一個真則為真,所以不管a是真還是假,結果都是真。
0 and a
and 左邊為0,為False,同樣,and只要有一個為假則為假,所以不管a是真還是假,結果都是假。
所以and 和 or 的結果可以根據第一個操作數的值來確定,那麼他就不會對第二個操作數進行運算。
這個功能用起來要很小心,不然很可能會出現想不到的結果。
這里會輸出什麼呢?
輸出:我天下第一
因為x是True,無論y and z 的結果是什麼,這個語句的結果都是True,這就是短路保護,當然也有的人說惰性計算。
我覺得迭代器、生成器那個才叫惰性計算。
C. Python內部是如何判斷一個對象是True還是False
作者:gao xinge
鏈接:https://www.hu.com/question/53708403/answer/139331035
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
內建函數boolpython中的所有對象都可以用內建函數bool來判斷布爾值是True還是False,如下>>> bool(1)
True
>>> bool(0)
False
>>> bool(True)
True
>>> bool(False)
False
>>> def f(a):
return a
>>> bool(f)
True
>>> bool(__builtins__)
True
>>> import collections
>>> bool(collections)
True
__nonzero__函數和__len__函數內建函數bool的邏輯順序: 如果對象沒有實現__nonzero__函數或者__len__函數,返回True; 如果對象實現了__nonzero__函數,根據__nonzero__函數的返回值判斷; 如果對象沒有實現__nonzero__函數,但實現了__len__函數,根據__len__函數的返回值判斷如下>>> # example one
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b
>>> t = f(0,1)
>>> bool(t)
True
>>> # example two
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b
def __nonzero__(self):
return self.a
def __len__(self):
return self.b
>>> t = f(0,1)
>>> bool(t)
False
>>> # example three
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b
def __len__(self):
return self.b
>>> t = f(1,0)
>>> bool(t)
False
D. python布爾值判斷,python中的not具體表示是什麼,舉個例子說
not表示取反啊,相當於C語言中的非(!),例如:
#因為x為True,所以輸出結果為1
x=True
ifx:
print1
else:
print2
#因為x為True,notx就是False了,所以輸出結果為2
x=True
ifnotx:
print1
else:
print2
E. Python中的邏輯運算符有哪些呢
關鍵是一個變數/值是「相當於」True還是False。
None、False、空字元串""、0、空列表[]、空字典{}、空元組(),都相當於False。其它的都相當於True。
先說 A or B 。
如果A相當於True,那麼返回A。否則,返回B。
所以,如果A和B都是False,那麼A and B也是False (False or False == False)。
除了做布爾值的判斷,C = A or B 這種寫法,常用於不確定A是否為空值時,把B作為候補來賦值給C。
A and B相反。如果A相當於True,那麼返回B。否則,返回A。
所以,只有A和B都是True時,A and B才是True (True and True == True)。