running = True
while running:
running = getStatus()
print("Ended") # move this outside the loop!
这要求getStatus在您想继续循环时返回一个真值,当您想停止时返回一个假值。你当前实现的那个函数没有做到这一点。当输入999时,它返回False,但如果您提供其他输入,则不会显式返回任何内容(在Python中,这相当于返回None)。由于False和None都是错误的,上面的代码实际上不起作用(您可以用running = getStatus() is None之类的东西来修补它,但这会很可怕)。您应该将函数更改为在其所有分支中都有一个显式的return语句(包括非整数输入的情况,其中它既不进入if或elif块)。在
你的
while
循环一直循环,因为这正是你告诉它要做的。从函数体调用的函数返回后,忽略返回值,无条件地打印"Ended"
,然后再次执行,因为循环中的条件显然仍然是真实的。在如果希望函数控制循环是否继续,则应使用其返回值作为循环中的条件,如下所示:
这要求
getStatus
在您想继续循环时返回一个真值,当您想停止时返回一个假值。你当前实现的那个函数没有做到这一点。当输入999
时,它返回False
,但如果您提供其他输入,则不会显式返回任何内容(在Python中,这相当于返回None
)。由于False
和None
都是错误的,上面的代码实际上不起作用(您可以用running = getStatus() is None
之类的东西来修补它,但这会很可怕)。您应该将函数更改为在其所有分支中都有一个显式的return
语句(包括非整数输入的情况,其中它既不进入if
或elif
块)。在如果循环和函数的逻辑紧密地交织在一起,那么将循环移到函数本身中可能是有意义的,而不是让它分开,需要使用返回值来指示何时停止。在单个函数中,可以使用
^{pr2}$break
直接退出循环:你可以改成-
如果(不是getstatus()): 休息
这样您就可以使用返回值来打破无限循环。 很简单!在
相关问题 更多 >
编程相关推荐