在Python中停止无限循环的while语句
我正在做一个简单的Python程序,里面有一个圆形的“按钮”,用户可以点击这个圆圈。如果他们点击的地方不在圆圈里,就会弹出一个消息,告诉他们点击的位置在圆圈外面,让他们再试一次。不过在最后这部分代码中,我遇到了一个无限循环的问题,尽管我用了“break”来尝试结束循环。有没有人能帮我看看是不是哪里出错了?谢谢!
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 个回答
-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语句。else语句是在if语句为假时执行的。
也就是说,如果if语句成立,代码就会停止运行;但如果if语句不成立,代码就会跳到else语句,显示“请在旋转按钮内点击”。
谢谢。
0
如果你想对点击事件做出反应,通常会使用一些图形用户界面(GUI)框架,比如TKinter、GTK、QT、wx,或者类似的东西,像PythonCard这样的封装工具。通过这些框架,你可以把一个事件,比如点击某个元素,连接到一个方法,这个方法里包含你的代码。这样,代码就不会一直循环运行,而是只有在点击发生时才会执行。
具体的代码会根据你选择的GUI框架有所不同,但你没有提供相关的信息。
1
x
和 y
在 while
循环中从来没有被更新过,所以如果它们在第一次循环时就已经在圆圈外面,length
的值就会一直保持不变(会大于 r
),这样 break
语句就永远不会被执行。
另外,使用 if length >= r:
。没有必要单独检查两个条件。(从逻辑上讲,应该是 if length > r:
,因为点击圆圈边缘也应该算在内。)