0
我有兩個條件,a
和b
。如果a
爲真,則應執行一個代碼塊,如果a
或b
爲真,則執行另一個代碼塊。有沒有比以下更好的方式來構造代碼 - 我可以避免重複測試a
?如何構造此代碼以避免重複?
if a or b:
if a:
<block 1>
<block 2>
我有兩個條件,a
和b
。如果a
爲真,則應執行一個代碼塊,如果a
或b
爲真,則執行另一個代碼塊。有沒有比以下更好的方式來構造代碼 - 我可以避免重複測試a
?如何構造此代碼以避免重複?
if a or b:
if a:
<block 1>
<block 2>
這是不可能的,沒有重複的測試。爲了驗證這一點,只需寫下真值表。
但是你能避免你的if
語句的嵌套:
if a:
<block 1>
if a or b:
<block 2>
這樣可以使代碼更易讀。
我在這裏假設a
是一個布爾值,而不是一個更復雜的表達式的佔位符,可能是昂貴的評估。在後一種情況下,您當然只能評估一次表達式並將結果賦值爲布爾值。
謝謝。 'a'是一個更復雜的表達式的佔位符 - 我會按照您的建議並創建一個變量來保存結果。 – user200783