爲什麼這個不行:如何在python中創建OR語句?
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
如何制定呢?
爲什麼這個不行:如何在python中創建OR語句?
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
如何制定呢?
if "v1" or "v2" in file:
相當於
if ("v1") or ("v2" in file):
這將永遠是True
因爲bool("v1")==True
你可以說
if any(x in file for x in ["v1", "v2"]):
或
if "v1" in file or "v2" in file:
與any
版本看起來更好,如果有超過2或3項檢查
嘗試
if "v1" in file or "v2" in file:
,而不是
if "v1" or "v2" in file:
也許Python的Boolean Operations的審查可能會有所幫助。在摘要頁面的底部還有一個運算符優先級表。如果你諮詢的表格,你可以看到,自in
運營商具有比or
操作的優先級高,表達這樣解釋:
if ("v1") or ("v2" in file):
,而不是你的預期/何意。
還要注意的是,如@ sepp2k下面有幫助的評論提到,如果or
有更高的優先級比in
,你的表現最終會爲if ("v1" or "v2") in file:
也不會工作,你希望的方式。
這是直接鏈接到另一個table of operator precedence,因爲我找不到上述的一個。
非空字符串都在自己的「真實十歲上下的」,所以'如果「V1」'被返回true。 – 2012-08-15 22:53:07
如果文件中的v1或文件中的v2工作 – jorrebor 2012-08-15 22:55:21
要對發生的事情添加更多的說明:您的條件被解析爲if(「v1」)或(文件中的「v2」):...,並且每個Python中的對象具有某種真值。 – millimoose 2012-08-15 22:56:14