Python與或運算

2021-10-06 17:47:18 字數 1504 閱讀 7404

今天碰到一道有意思的題目,看了之後發現自己對python與或的理解還是欠缺,如下。

題目:求1+2+…+n

如果不加限制,我們有很多方法計算該值,例如高斯公式,遞迴等。

我們思考下遞迴的解法:

def

sumnums_if

(self, n:

int)

->

int:

ifnot n:

return n

return n + self.sumnums_if(n-

1)

即當n等於0的時候,開始自底向上返回。

那麼,當限制了if語句的時候,我們如下實現這個判斷呢?

實際上,我們可以使用and或者or運算子實現該操作,**如下:

def

sumnums

(self, n:

int)

->

int:

return n and n + self.sumnums(n -

1)

and運算子:每一項都為true,則整個表示式為true,當執行到某乙個false項時,不再往後執行,直接返回false

or運算子:與and不用的是,or運算子只要表示式中有一項為true,則整個表示式為true,即執行到某乙個true項時,也不再向後執行,直接返回true

我們來看點例子:

1、二元運算

如果乙個true,乙個false或兩個false:

return

true

andfalse

# 返回false

return

true

o***lse

# 返回true

如果兩邊都是true,則and返回右邊的,or返回左邊的:

return1or

2# 返回1

return

1and

2# 返回2

2、多元運算:從左到右,兩兩運算,兩兩運算時邏輯見上面二元運算

例如下面三句**,第一句返回1,第二句返回3,第三句返回2

return1or

2or3#返回1

return

1and

2and

3#返回3

return

1and2or

3#返回2

我們在回頭看下上面的and型遞迴實現,是不是豁然開朗了呢~

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...

與運算( ) 或運算( ) 異或運算( )

預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 運算規則 0 0 0 0 1 1 ...

與運算( ) 或運算( ) 異或運算( )

一 與運算子 預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 二 或運算 運算規則...