用函数跳出while真循环

2024-05-13 12:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个while真循环-

while True:
  getStatus()
  print('Ended')

如果答案是999,我希望能突破它。这就是我所尝试的:

^{pr2}$

但是,即使输入是“999”,它也会返回并询问“什么是盒子ID?”再一次。在

我怎样才能摆脱while真循环?在


Tags: 答案idtrue盒子printwhilegetstatuspr2
2条回答

你的while循环一直循环,因为这正是你告诉它要做的。从函数体调用的函数返回后,忽略返回值,无条件地打印"Ended",然后再次执行,因为循环中的条件显然仍然是真实的。在

如果希望函数控制循环是否继续,则应使用其返回值作为循环中的条件,如下所示:

running = True
while running:
    running = getStatus()
print("Ended") # move this outside the loop!

这要求getStatus在您想继续循环时返回一个真值,当您想停止时返回一个假值。你当前实现的那个函数没有做到这一点。当输入999时,它返回False,但如果您提供其他输入,则不会显式返回任何内容(在Python中,这相当于返回None)。由于FalseNone都是错误的,上面的代码实际上不起作用(您可以用running = getStatus() is None之类的东西来修补它,但这会很可怕)。您应该将函数更改为在其所有分支中都有一个显式的return语句(包括非整数输入的情况,其中它既不进入ifelif块)。在

如果循环和函数的逻辑紧密地交织在一起,那么将循环移到函数本身中可能是有意义的,而不是让它分开,需要使用返回值来指示何时停止。在单个函数中,可以使用break直接退出循环:

^{pr2}$

你可以改成-

如果(不是getstatus()): 休息

这样您就可以使用返回值来打破无限循环。 很简单!在

相关问题 更多 >