while循环python问题

时间:2011-03-08 15:24:47

标签: python while-loop

以下是特定类中的一种方法,它在python中创建一个简单的计算器。它旨在等待单击按钮并返回该按钮的标签:

def getButton(self):
    while True:
        p = self.win.getMouse()
        for b in self.buttons:
            if b.clicked(p):
                return b.getLabel()

self.buttons变量是所有计算器按钮的列表。 Clicked是一种检查按钮是否被单击的方法。我不明白的是“while True”布尔while循环。什么是真实或错误的测试?在什么情况下它不是真的?

6 个答案:

答案 0 :(得分:4)

这是busy wait的示例。此程序将停留在此循环中,永远检查是否已点击b中的任何按钮self.buttons。此时,它将从忙碌的等待中退出以返回b的标签。

所以,从本质上讲,它不会测试任何。它只是等到满足条件。

话虽这么说,忙碌的等待被认为是anti-pattern。如果您可以控制此代码库(这不仅仅是一个简单的玩具应用程序),请考虑查看是否可以将此条件作为更大的应用程序主循环的一部分进行检查,或者该对象是否提供了该事件可以的方式等待(例如,使用回调或单独的线程)。

答案 1 :(得分:2)

真的永远是对的。 while循环将永远运行,直到它在执行return语句时“手动”退出。

答案 2 :(得分:1)

它没有测试。

while True意味着永远循环。 while循环直到其表达式为false。真的永远不会错。

答案 3 :(得分:1)

有多种方法可以退出infite循环:

  • return退出当前函数(从而退出函数中的所有循环)
  • break仅退出当前循环
  • 任何未捕获的异常
  • 此外,有时您需要无限循环,例如在服务器案例中。你仍然可以通过调用sys.exit或类似的流程结束方法
  • 来杀死它

答案 4 :(得分:1)

控制机制,例如while,if,etcetera检查布尔值。典型的检查例如“a == 5”是真还是假。但您也可以简单地输入“True”,在这种情况下,条件将始终为真。

换句话说:“while true”是一个无限循环,代码永远不会停止运行,直到达到返回b.getLabel()语句。

答案 5 :(得分:0)

我能给出的唯一建议是通过将其发送到无限循环中,它总是会监听按钮点击。单击按钮后,您可能需要在该循环中编写一个退出。