繁体   English   中英

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

[英]Stop an Infinite Loop in Python While Statement

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

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

另外, if length >= r:使用。 无需分别检查这两个条件。 (从逻辑上讲,应该是if length > r:无论如何,因为单击圆的边缘还是要计数。)

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

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,则else语句运行。 因此,这里假设如果语句正确,则代码将中断,但是如果语句为false,则代码将转到else语句并打印。请在旋转按钮内单击。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM