Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
停止Python While语句中的无限循环_Python_Python 3.x_While Loop_Conditional Statements - Fatal编程技术网

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

停止Python While语句中的无限循环,python,python-3.x,while-loop,conditional-statements,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

我正在开发一个简单的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") 
r=75
尽管如此:
#确定单击是否在圆内的步骤
长度=数学sqrt((x-100)**2)+(y-250)**2))
如果长度==r或长度
x
y
不会在
while
循环中更新,因此如果它们在第一次迭代中不在您的循环中,
长度将始终保持相同的值(大于
r
),并且
break
语句将永远不会执行


另外,如果长度>=r:
,则使用
。无需分别检查这两种情况。(从逻辑上讲,如果长度>r:
无论如何都应该是
,因为点击圆的边缘应该仍然有效。)

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

r=75
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")
尽管如此: #确定单击是否在圆内的步骤 长度=数学sqrt((x-100)**2)+(y-250)**2)) 如果长度==r或长度
您的代码是正确的,只需要else语句。当if语句为false时,else语句将运行。 所以这里假设if语句是正确的,那么代码就会中断,但是当if语句是false时,代码会转到else语句并打印,请单击spin按钮


多谢各位

当我使用一个长度的数值,看看你得到的x和y坐标是否正确,以及你使用的公式时,代码对我来说运行良好。