if
語句都以同樣的方式評估。
if something:
do_stuff
如果something
爲True,則do_stuff
塊運行[1]。如果something
不是True,則do_stuff
塊不運行。兩個if語句之間的區別並不是那個「工作方式不同」,而是它們在something
的不同版本上運行。
and
和or
是採取真值並計算新真值的二元運算。就像在1 + 3
中一樣,+
是一個二進制操作,它取1
和3
的數字,併產生一個新的數字4
。 a and b
取兩個真值a
和b
併產生一個新值。而且雖然我們可以有x + y
或x * y
從數字x
和y
產生不同的數據,我們可以有a and b
或a or b
,從而產生不同的真值與真值a
和b
。
但if
聲明不關心這一點。它不需要知道我們如何得到它正在測試的真值,它將以任何方式完全相同。 and
和or
是完全獨立的,它們只是組合真值來獲得新值的方法。
爲and
和or
工作是如何根據談論的東西,可以是真或假,當我們在使用英語and
和or
某些方面的直覺。
在聲明「如果正在下雨那麼我會得到一把雨傘」,「正在下雨」的部分是一個條件,可以是真或假,其餘的句子是說什麼如果這是真的發生。在英語中,我也可以說「如果它正在下雨和我覺得像走路然後我會得到一把傘」;這有兩個單獨的條件:「正在下雨」和「我感覺像走路」這兩個單詞組合成一個條件,單詞和。這句話意味着如果「下雨」和「我感覺走路」都是真的,我會拿傘的;如果天氣晴朗,我不認爲我需要一把雨傘,如果我開車,那麼我不在乎我的房子和車子之間受潮。
我還可以這樣說:「如果下雨或我感覺就像走話,我會得到一個保護傘」。這句話意味着如果其中一個或兩個條件都成立,我就會得到一把傘。在這裏,我們可以猜測,如果下雨,我希望在今天晚些時候有一把雨傘,即使我不想走路,如果我想走路,我想要一把雨傘,以防在隨後的行程中下雨,即使現在不下雨。
瞭解編程真值和and
和or
運營商的最佳方式是牢記英語and
和or
的這種自然的理解。這爲您提供了一種快速瞭解涉及and
和or
的簡單表達式的直觀方式。但在編程方式and
和or
作品是正式的,所以我們可以正確地寫下他們是如何工作的,不管在正常的英語用法中有什麼不明確或特殊情況。
A and B
爲真,如果A
爲True,並且B
爲True,否則爲假(它是False如果任A
或B
爲False)。 A or B
如果A
或B
爲真(如果A
爲False且B
爲False,則爲False,否則爲True)。下面是顯示了這個表:
A | B | A and B
------+-------+---------
True | True | True
True | False | False
False | True | False
False | False | False
A | B | A or B
------+-------+--------
True | True | True
True | False | True
False | True | True
False | False | False
[1]事實上,這個故事比這更復雜一些(因爲我的整個的答案是正確的)。 Python中的大多數布爾運算(包括if
語句和運算符and
和or
)不是基於確切的真值,而是基於「真值」。簡單地說,數字是0,空容器和字符串,特殊值None
的行爲就好像它們是False
,當您將它們給予期望真值的操作時,其他所有操作就好像它們是True
一樣。我們有時會使用術語「truthy」或「falsey」來描述不一定是True
或False
的值,但其行爲就好像它們一樣。
同樣地,從現有的生產新的真值,像and
和or
操作不必返回True
或False
,他們可能會回報你給了他們所要求的表,即「truthy」或「falsey」的值以上。
但是,如果有人讀這是在早期階段的學習與真值編程,我會強烈建議你忽略這一點,只是覺得自己是操縱True
和False
,同樣不用擔心「短路評估」以及檢查事物的順序(如果只涉及真正的True
和False
,或者甚至大部分時間使用其他值,則無關緊要)。一旦你掌握了基礎知識,就很容易理解這些概念。
來源
2012-05-30 04:10:28
Ben
這意味着它的意思是:它打印如果「人==貓」或「狗==貓」。這兩種情況都不是現在的情況:「人」是20,「貓」是30,而20不等於30.「狗」是15,而15不等於30.我不明白這是怎麼回事這裏有什麼不明白的地方。 –