Python 裡 and or 的計算規則是怎樣的?

時間 2021-05-30 11:22:37

1樓:學掌門資料分析

0and* 不需要再考慮*是0還是1,結果是0

1and* 需要考慮*是0還是1來決定結果。

1or* 不需要考慮後面的*,結果為1

0or* 需要考慮後面的*來決定結果

這個語法看起來類似於 C 語言中的 bool ? a : b 表示式。

整個表示式從左到右進行演算,所以先進行and表示式的演算。 1and'first' 演算值為 'first',然後 'first'or'second' 的演算值為 'first'。

0and'first' 演算值為 False,然後 0or'second' 演算值為 'second'。

and-or主要是用來模仿三目運算子 bool?a:b的,即當表示式bool為真,則取a否則取b。

and-or技巧,boolandaorb 表示式,當 a 在布林上下文中的值為假時,不會像 C 語言表示式 bool ? a : b 那樣工作。

2樓:春林如許

我說一下的的拙見-

and 和 or 是用來處理多個條件,得出結果的,要處理的東西可以化為最簡單的True和False。

T和F是最基礎的,能包含所有,或組成所有。或可以看作1和0,1可以包含除0之外的所有,0就是0,老師是這麼教的,是方便理解,不要太較真。

and和or就是處理T和F的,下面是老師給的公式圖:

and:T and T = T

T and F = F

F and T = F

F and F = F

or : T or T = T

T or F = T

F or T = T

F or F = F

我經過分析總結又得出:

and F = F ,elseT,就是and兩邊連線的值只要有乙個F,得出的結果就是F,乙個F都沒,結果就是T,多個and在一起,可以看成乙個and,and相對偏向獲取F值

or T = T . or兩邊連線的值有乙個是T,結果就是T,要是乙個T都沒有全是F,結果才是F,跟and一定程度上是相反的,多個or在一起可以看成乙個or,or偏向獲取T值

還有就是這些都是用於if判斷TF的,我們首先學的是if,不滿足的情況才選擇else(沒有else,只有if,也可以執行判斷的),也可以看作if是T,else是F,而要獲取if的T就是要那多個條件判斷後輸出的是T,在輸出結果的前一步是獲得T,再前一步才是F(再往前可以無限套娃),所以要優先進行F的判斷,最終進行T的判斷,即and優先於or,就是先and裡挑F,or裡挑T,你的想法需要化為資料帶進這個基礎公式裡,才能輸出你想要的結果。

上面的我基本都試驗過了:

a = True , b = Ture , c = False , d = False

if c or a and b and d or c:

print(True)

else:

print(False)

>False

可以把abcd,and,or幾個值的順序,數量都變一下,就能印證上面的理論了。

一般先算括號裡的,再and,再or,多個and或or可以看作乙個。

(假設市場中你和老闆爭論,把-雞蛋裡沒骨頭-帶入上面abc的值,老闆說雞蛋裡不可能有石頭,你把abc都砸了,發現c有石頭,那結果是啥?我猜你會被打,被認為是搗亂的,石頭也是你弄得障眼法,畢竟雞蛋裡怎麼會有石頭呢。)

在這個邏輯的世界裡,只分真假兩種東西,幾乎所有東西都可以帶進來,除了沒賦值字母和中文,就像你是張三或zhaosi,它不認識你,程式裡沒你的資料,就算你是億萬富翁也沒用,除非帶上""變成字串或集合,而程式裡除了少數幾個如0,None,空的集合之類的,其他的基本都預設bool值為True,還包括內建函式,print(bool(print))=True,print(bool(print()))=False,如果把上面的d改成等於2,就會輸出True。

not跟and,or是同時教的,not 比較好懂,就是反過來,把T變成F,F變成T,not 1的bool是F。下面是我的腦洞:其實每個值都可以無限套娃的,就是一層包含一層的千層餅,無限疊加,初始只有T和F,真實和虛假,上公升到最高的高度可以理解為整個宇宙為真實的存在的T,F則是虛假的無,這兩個集合在一起組合成更高一層面的T,這是往上推,往下按我們認知的地理來分的話,,這麼小的我,腦海裡還可以包含世界(我所認知的世界),後面是腦洞中的腦洞:

我認為,如果乙個社會足夠複雜(有非常多的,多變的變數),而你要與另乙個人鬥智鬥勇,在這個如千層餅般的社會,比的就是誰知曉的變數多少,誰的層數高,多者高者贏,獲得對方的一切,輸的消逝於此,要怎麼贏呢,根據自己對雙方的了解,猜測對方的層數,做出布置,而他根據變數知道你的布置,針對你的布置去布置,如果這是你讓他看到的呢,如果他知道這是你讓他看到的呢,你猜他會不會做出二次布置呢,你猜他猜不猜,你猜他猜不猜你猜不猜。這裡的你和他都都在我這個T之下

3樓:

And : 從左至右計算操作物件,返回第乙個為假的物件的計算結果,如果沒有假(即全部為真),則返回最右側的操作物件的計算結果

Or : 從左至右計算操作物件,返回第乙個為真的物件的計算結果,如果沒有真(即全部為假),則返回最右側的操作物件的計算結果

見python學習手冊第四版

4樓:Hustyc

中國人程式設計師絕大部分都不知道,and和or 沒有優先順序差別,邏輯運算是從左到右依次進行的,遵循短路規則。括號()也不能改變優先順序,括號的作用僅僅是把括起來的部分看成乙個整體來判斷

5樓:程偉光

python 中的and從左到右計算表示式,若所有值均為真,則返回最後乙個值,若存在假,返回第乙個假值。

or也是從左到有計算表示式,返回第乙個為真的值。

6樓:圍城

在Python中,空字串為假,非空字串為真。非零的數為真。

數字和字串之間、字串之間的邏輯操作規律是:

對於and操作符:

只要左邊的表示式為真,整個表示式返回的值是右邊表示式的值,否則,返回左邊表示式的值

對於or操作符:

只要兩邊的表示式為真,整個表示式的結果是左邊表示式的值。

如果是一真一假,返回真值表示式的值

如果兩個都是假,比如空值和0,返回的是右邊的值。(空值或0)總結一句話就是:無論操作符是哪個,最後的結果一定是按照計算順序能最快判斷出結果的那個表示式決定的舉例:

7樓:

你好!我只說三點

對python而言

其一, 在不加括號時候,and優先順序大於or

其二, x or y 的值只可能是x或y. x為真就是x, x為假就是y

其三, x and y 的值只可能是x或y. x為真就是y, x為假就是x

顯然,對於, 1 or 5 and 4: 先算5 and 4, 5為真, 值為4. 再算1 or 4, 1 為真,值為1

對於, (1 or 5) and 4: 先算1 or 5, 1為真, 值為1. 再算1 and 4, 1為真,值為4

8樓:mmdnxh

These are the Boolean operations ,ordered by ascending priority 。官方標準庫里的解釋. 這些布林操作,按公升序提公升優先順序即or

9樓:小溪徑流

為什麼我和你們理解的都不一樣?and 和or根本就沒有所謂的優先順序高低,python就是按照從左到右計算的。以上面答主資料為例:

(1 or 0) and 2 =2 #先看(1 or 0) ,如果1為false則返回0,否則返回1,所以返回1;再看and部分,如果(1 or 0) 為false 則返回 (1 or 0) ,否則返回2;所以返回2。

1 or (0 and 2) =1#如果1為false則返回(0 and 2),否則返回1;所以返回1。

1 or 0 and 2 =1#如果1為false則返回 0 ,否則返回1;所以返回1。

以上是我的觀點,根本就不需要什麼優先順序。

ps:我昨天才開始看python,勿必請大神輕拍。

10樓:李振宇

True

------

1. (這一點是錯誤的)and 的優先順序不高於or(這一點是錯誤的

2. 在純and語句中,如果每乙個表示式都不是假的話,那麼返回最後乙個,因為需要一直匹配直到最後乙個。如果有乙個是假,那麼返回假

3. 在純or語句中,只要有乙個表示式不是假的話,那麼就返回這個表示式的值。只有所有都是假,才返回假

4. 在or和and語句比較難表達,總而言之,碰到and就往後匹配,碰到or如果or左邊的為真,那麼就返回or左邊的那個值,如果or左邊為假,繼續匹配or右邊的引數。總之,這個是從左到右的,沒有優先順序之說

11樓:李明

這個規則符合"短路"原則,既or的左邊表示式只要返回了真值既會終止對右邊表示式取值直接返回左邊表示式的值。and則是左右兩邊表示式均返回真值才會返回右邊比表示式的值作為and表示式整體的值,如果有一邊為假值則只會返回假值。然後聯合起來的情況是從左到右生成一顆2叉樹,對整個表示式的求值過程就是按照上面的規則先序遍歷整棵數的過程。

比如0 or 5 and 7 or 0 生成的樹就是or0 and

5or70

求值過程是先取到 or,取左值 0,木有短路,取右值,and表示式,再取左值 5,為真,再取右值 or表示式,取左值,7,為真,短路之,後面不管了,返回7,and表示式左右都是真,返回右值,or 表示式最後返回右值,就是七

>>> print 0 or 5 and 7 or 07

python複數怎麼計算?

夢魘 本文,學習使用python,進行複數計算的方法。工具 原料 電腦python3.6 方法 步驟 1複數的輸入方法 a 5 6j 注意,j在python裡面,代表虛數單位,但是輸入的時候,6和j之間,沒有乘號。2檢視a的資料型別 print type a 3提取a的實數部分 print a.re...

有沒有可以平行計算的 Python 科學計算庫?

秦續業 可以使用 Mars 來並行 numpy。Mars tensor 目前覆蓋了主流的 numpy 介面,API doc 可以參考 https docs.pymars.org zh CN l atest tensor routines.html 只要會用 numpy,就會用 mars tensor...

Python如何高效的計算兔子數列?

引力微子球 這個回答只適用於直接求第n項的情況,且可能需要一些線性代數和快速冪相關的知識。首先我們把求斐波那契數列的通項寫成以下形式 那麼我們可以推出 之所以繞到矩陣,是因為我們可以藉著快速冪演算法來快速的計算這個等號左邊的矩陣 時間複雜度從 降至 deffib n def mul a,b 為對稱矩...