2013-07-02 38 views
2

我有以下while循環:的Python:有條件或

accuracy = 0.0001 # Or whatever 
loop_limit = True 
limit = 100 
# Main loop: 
while abs(P - P_old).max() > accuracy or (if loop_limit: count > limit): 

不用說這是行不通的。我想要的是or聲明僅在loop_limit = True時才被檢查。

我可以把一個if語句轉換成while環路重置環路只有loop_limit = True的每一個傳球的計數變量,但會檢查loop_limit在while循環的每次傳球,我想避免這種情況。 (這個循環將會運行數百萬次,每次保存都會有所幫助)。我有一種感覺,有這樣一個乾淨的方式。

編輯:

注意(P - P_OLD)是一個numpy的陣列,因此.max()我忘了提,我不希望立即將其刪除,因爲它已經在回答中被引用了。

回答

4

試試這個:

while abs(P - P_old) > accuracy or (loop_limit and count > limit): 

順便說一句,那是什麼max()該怎麼辦呢?它甚至不編譯...

+2

是的。這就是它。乾杯。 – MarcinKonowalczyk

+0

我正在調試別人的代碼,所以我還沒有想過。儘管如此,我仍然可以編譯。雖然我使用Enthought Canopy和IPython,但它可能會消除一些錯誤。我只是想看看它。 – MarcinKonowalczyk

+0

我忘了提P是一個numpy數組。 – MarcinKonowalczyk