2 回答

TA貢獻1842條經(jīng)驗 獲得超22個贊
觸發(fā)“reach here 1”語句的原因是第一個 if 條件被評估為 true。
由于您沒有括號/“和”語句分組,如果所有三個和語句都為真或一個“或”語句為真,則第一個“如果”語句將被評估為真并且“到達此處 1”將是打印。
在這種情況下,一個“或”語句為真。Python 正在查看行
if m > 1 and type1 == 'b' and type2 == 'y' or 'z'
并說,“好吧,m>1,檢查。type1 不 == b,所以不,這些 AND 語句是假的。然后,它移動到 OR 語句并說‘或 Z’是真的。
在 python 中,任何非空字符串值都為真。因此,'z' 的計算結果為 TRUE 并且滿足 OR 條件 - 感謝@juanpa.arrivillaga 進行了此更正。有關詳細信息,請參閱此頁面:python 中字符串的真值

TA貢獻1880條經(jīng)驗 獲得超4個贊
對于語句,type2 == 'y' or 'z'這不會檢查 type2 是“y”還是“z”。相反,您應該使用in將值作為列表的運算符
In [19]: m = 1
...: type1 = 'a'
...: type2 = 'x'
...:
...: if m > 1 and type1 == 'b' and type2 in ["x","z"]:
...: print('reach here 1')
...: elif type1 == 'a' and type2 == 'x':
...: print('reach here 2')
...:
reach here 2
添加回答
舉報