python中 和and的區別及三目運算子的實現

2021-08-15 15:39:51 字數 1296 閱讀 6067

&和and的區別

python中的&符號延續的了c/c++的含義,指的是位運算

而用and來代替c/c++中的&&,來進行邏輯運算,例項如下:

>>> print(1 & 2)    # 1 的二進位制是 01,2的二進位制是 10

0>>> print(1

and2)

2

要注意的是,在例項中,1 and 2的返回值是2,而不是1

因為在python中,由於短路效應:a and b,a為false,b不會被判斷,直接返回a;a為true,表示式的值就取決於b,因此就返回b 。or運算同理,a or b,a為ture,b不會被判斷,直接返回a;a為false,表示式的值就取決於b,因此就返回b 。

這是與c/c++不一樣的,在c/c++中,也有短路效應,但邏輯運算只返回0或1

>>> print(false

and1)

false

>>> print(0

and1)

0>>> print( and1)

>>> print(2

and1000)

1000

從上面例子中也可以看出,在a and b中,不論a,b是哪種形式,都是直接返回a,b本身的值

經典筆試題

這裡以一道經典的筆試題為例,實際運用上述特性:

求1+2+3+…+n。但要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句。

分析:求解1+2+3+…+n,很容易想到的應該是遞迴,在不能使用條件判斷語句的情況下,可以使用邏輯運算短路的方法得到遞迴停止的條件

def

sum_solution

(n):

ans=n

temp=ans and sum_solution(n-1)

ans=ans+temp

return ans

三目運算子

在c/c++中,有 ? : 三目運算子,在python中,也有同樣的實現:

為真時的結果 if 判斷條件 else 為假時的結果(注意,沒有冒號)

上述試題如果沒有條件判斷語句if else的限制,可以用三目運算2行**實現

def

sum_solution

(n):

return n + sum_solution(n-1) if n > 0

else

0

life is short, you need python~

Python中 和 的區別

python中,會把接收到的引數形成乙個元組,而 則會把接收到的引數存入乙個字典 我們可以看到,foo方法可以接收任意長度的引數,並把它們存入乙個元組中 deffoo args print args foo fruit animal human fruit animal human foo 1,2,...

python中 和 的區別

通常c c 中,算術運算子的計算結果是根據參與運算的兩邊的資料決定的,比如 6 3 2 6,3都是整數,那麼結果也就是整數2 6.0 3.0 2.0 6.0,3.0是浮點數,那麼結果也是浮點數2.0,跟精確的說,只要 兩邊有乙個數是浮點數,那麼結果就是浮點數。在python2.2版本以前也是這麼規定...

Python中 和 is 的區別

python中一切皆為物件 python中物件包含三要素 id 身份唯一標識 type 物件的型別 value 物件的值 is 和 的區別 在日常開發中,經常用 is 和 對兩個物件進行比較,那兩者的區別在哪呢?is 比較的是兩物件的id是否相等,即兩物件是否指向同一塊記憶體空間 而 是判斷兩物件的...