刷題翻車 python 布林運算操作符的優先順序

2022-02-09 17:20:09 字數 1447 閱讀 7929

前兩天在 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

我是如何心算的呢?

布林值僅有truefalse兩個,布林值操作符也僅有與and,或or,非not三個。我本來以為自己全部掌握,怎麼還做錯,而且還不知道錯在哪兒?

最簡單的運算,自測一下,我均已掌握,並無錯漏。

太奇怪了,錯在哪兒?想不明白,那就開啟《自學是門手藝》的「入口」和「值及相應的運算」 兩個章節,重複讀布林運算操作符部分,才發現關鍵是:

優先順序最低的是或 or,然後是與 and, 優先順序最高的是非 not

而上述心算時,我把andor視為同等優先順序,並從左往右順序計算。——務必留意:這個認識是錯誤的!這倆優先順序不同!

true or false and false的計算順序,應該是:

再找個題目true and false or not true自測一下:

現在想想真的很奇怪,當初我是如何想當然地把andor視為同等優先順序呢!——幸好還有機會能通過刷題發現自己的知識點錯漏!

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 ...