我想在我的代碼中「Python-esque」,在那裏我試圖連續調用三個函數,第二個只在第一個函數不會調用時才被調用,噸產生結果,而第三個僅當所述第一和第二不...Python「while」循環沒有按預期結束
sky = "none"
while sky == "none":
sky = searchUnguided(inframe, skysearch, debug=debug)
sky = searchPQ(ad, skysearch, maxpq, debug=debug)
sky = searchAB(ad, maxpq, debug=debug)
break
這些函數searchUnguided
,searchPQ
和searchAB
返回一個值,該值是none
默認,但可以改變到別的東西。這是我想停止while sky == "none"
循環的這些「其他」情況。然而,它並不像我預期的那樣工作,並且即使第一個函數返回none
以外的其他東西,也會調用所有這三個函數。
一個功能的示例(已驗證它返回預期非none
值):
def searchUnguided(filename, skysearch, debug=False):
utdate = filename[1:9]
n = int(filename[11:15])
skyout = "none"
for ndiff in skysearch:
sn = n - ndiff
skyim = "N" + utdate + "S" + str(sn).zfill(4)
fskyim = os.path.join(rawdir, skyim + ".fits")
try:
sad = AD.read(fskyim, mode='readonly')
if getstate(sad, "frozen") != "none":
# we found a sky!
skyout = skyim
break
except:
continue
return skyout
我誤解的方式while
循環的作品?我總是可以使用嵌套if
陳述,但似乎很囉嗦...
在此先感謝!
你知道前三項功能後,它會破壞調用不管是什麼? – 2014-10-30 01:19:13
不,如果我刪除了「break」它將永遠運行... – mdhoney 2014-10-30 02:09:30