前兩天在 xue.cn 體驗答題挑戰,我有道題做錯了,卻不明白錯在**。題目大概如下,**執行後將列印什麼?
if true or false and false:
print('1')
else:
print('2')
這個題目考察兩個簡單的知識點,乙個是布林運算,另乙個是流程控制語句。結果是 1,我則選了2。
覆盤我的解題思路。先是布林運算部分,我把true or false and false
的結果算成false
,於是**簡化為:
if false:
print('1')
else:
print('2')
我短暫發懵,後來回過神來,整理了一篇筆記《和35歲劉阿姨一起自測 python 流程控制基本功》用於鞏固基礎功。
流程控制之if 分支控制語句,僅會執行條件為真的那個分支,所以上述**段的結果為 2。然後這才發現,我錯在布林運算部分。在 xue.cn 網頁上直接輸入並執行true or false and false
,顯示結果為true
。
但我心算答案是false
。
我是如何心算的呢?
布林值僅有true
和false
兩個,布林值操作符也僅有與and
,或or
,非not
三個。我本來以為自己全部掌握,怎麼還做錯,而且還不知道錯在哪兒?
最簡單的運算,自測一下,我均已掌握,並無錯漏。
太奇怪了,錯在哪兒?想不明白,那就開啟《自學是門手藝》的「入口」和「值及相應的運算」 兩個章節,重複讀布林運算操作符部分,才發現關鍵是:
優先順序最低的是或 or,然後是與 and, 優先順序最高的是非 not而上述心算時,我把
and
、or
視為同等優先順序,並從左往右順序計算。——務必留意:這個認識是錯誤的!這倆優先順序不同!
true or false and false
的計算順序,應該是:
再找個題目true and false or not true
自測一下:
現在想想真的很奇怪,當初我是如何想當然地把and
和or
視為同等優先順序呢!——幸好還有機會能通過刷題發現自己的知識點錯漏!
python 布林運算
給定乙個布林表示式和乙個期望的布林結果 result,布林表示式由 0 false 1 true and or 和 xor 符號組成。實現乙個函式,算出有幾種可使該表示式得出 result 值的括號方法。示例 1 輸入 s 1 0 0 1 result 0輸出 2解釋 兩種可能的括號方法是1 0 0...
python布林系列 python 布林運算
python學習手冊 讀書筆記 真值測試 在python中 任何非零數字或非空物件都為真 數字零 空物件以及特殊物件none都被認作是假 比較和相等測試會遞迴地應用在資料結構中 比較和相等測試會返回true或false 1和0的特殊版本 布林and和or運算子會返回真或假的操作物件 python中有...
Python布林運算中0的問題
看到一些書裡面寫的,python中 and 和 or 的定義。比如老齊的那本書寫的是 但是對0有點問題,比如 false or 0 按上面的程式走下來,返回bool 0 應該是false,但實際返回是 0,書中偽 有問題,但是解釋沒問題,如果a的布林值是false,那麼返回的是b的值 a or b ...