在语句中停止Python中的无限循环

时间:2014-11-02 06:13:29

标签: python python-3.x while-loop conditional-statements

我正在开发一个简单的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") 

3 个答案:

答案 0 :(得分:1)

xy永远不会在while循环内更新,因此如果它们在第一次迭代中不在您的圈子中,length将始终保持不变值(大于r),永远不会执行break语句。

另外,使用if length >= r:。无需单独检查这两个条件。 (从逻辑上讲,它应该是if length > r:,因为点击圆圈的边缘仍应计算在内。)

答案 1 :(得分:0)

如果你想对点击做出反应,你通常会使用某种GUI框架,TKinter,GTK,QT,类似的东西或者PythonCard的包装。使用is,您可以将事件(例如单击元素)连接到应包含代码的方法。这样代码不会在循环中运行,而是仅在单击发生时运行。 实际代码很大程度上取决于您选择的GUI框架,但您没有提供任何相关信息。

答案 2 :(得分:-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")

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

谢谢。