[英]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")
x
和y
永远不会在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.