我想在我的代码中“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