2016-04-03 94 views
0

我有兩個條件,ab。如果a爲真,則應執行一個代碼塊,如果ab爲真,則執行另一個代碼塊。有沒有比以下更好的方式來構造代碼 - 我可以避免重複測試a如何構造此代碼以避免重複?

if a or b: 
    if a: 
     <block 1> 
    <block 2> 

回答

1

這是不可能的,沒有重複的測試。爲了驗證這一點,只需寫下真值表。

但是你能避免你的if語句的嵌套:

if a: 
    <block 1> 
if a or b: 
    <block 2> 

這樣可以使代碼更易讀。

我在這裏假設a是一個布爾值,而不是一個更復雜的表達式的佔位符,可能是昂貴的評估。在後一種情況下,您當然只能評估一次表達式並將結果賦值爲布爾值。

+0

謝謝。 'a'是一個更復雜的表達式的佔位符 - 我會按照您的建議並創建一個變量來保存結果。 – user200783