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

2 投票
3 回答
3299 浏览
提问于 2025-05-01 02:42

我正在做一个简单的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

xywhile 循环中从来没有被更新过,所以如果它们在第一次循环时就已经在圆圈外面,length 的值就会一直保持不变(会大于 r),这样 break 语句就永远不会被执行。

另外,使用 if length >= r:。没有必要单独检查两个条件。(从逻辑上讲,应该是 if length > r:,因为点击圆圈边缘也应该算在内。)

撰写回答