2014-11-02 96 views
2

我正在研究一个简单的python程序,它涉及到创建一个圆圈“按钮”,然后让用户在圆圈内单击。如果他们没有点击该圈子,则会显示一条消息,指出他们已经在圈子外点击并应该再试一次。但是,在最后一部分,尽管使用了中断,但我仍然在代码中获得了无限循环。有什么方法可以帮助人们查看是否有错误?谢谢!停止Python中的无限循环虽然语句

r = 75 

while True: 
    # to determine if click is within circle 
    length = math.sqrt(((x-100)**2) +((y-250)**2)) 
    if length == r or length < r: 
     break 
    # prints if user does not click within the range 
    print("Please click within the spin button") 
+0

当我使用长度的数值时,代码对我来说工作正常,看看您得到的x和y坐标是否正确以及您使用的公式。 – 2014-11-02 06:20:16

回答

1

xy从不在while环路内更新,这样,如果他们在第一次迭代你的圈子之外,length将始终保持在相同的值(大于r),以及break语句永远不会被执行。

另外,使用if length >= r:。无需分别检查两个条件。 (从逻辑上讲,它应该是if length > r:,因为点击圆的边缘仍然应该计数。)

+0

非常感谢!这工作! – Kara 2014-11-02 17:47:16

0

如果您想对点击做出反应,您通常会使用某种GUI框架,TKinter,GTK,QT, wx类似的东西或围绕PythonCard的封装。用你可以连接一个事件,比如点击一个元素到一个应该包含你的代码的方法。这样,代码不会在循环中运行,而只会在点击发生时运行。 实际的代码很大程度上取决于您选择的GUI框架,但您并未提供任何有关该信息的信息。

-1
r = 75 
while True: 
    # to determine if click is within circle 
    length = math.sqrt(((x-100)**2) +((y-250)**2)) 
    if length == r or length < r: 
     break 
    else: 
    # prints if user does not click within the range 
    print("Please click within the spin button") 

您的代码是正确的,只需要其他语句。 else语句在if语句为false时运行。 所以在这里假设如果语句是正确的,那么代码将会中断,但是如果语句为false,代码将转到else语句并打印请点击旋转按钮。

谢谢。

+1

这个答案只是没有任何解释的代码。 – BDL 2014-12-12 21:27:20