Остановить бесконечную петлю в Python Пока заявление
Я работаю над простой программой 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:
во всяком случае, так как клик на краю круга все равно должен подсчитываться.)
Если вы хотите отреагировать на клики, вы обычно используете какую-то инфраструктуру графического интерфейса, TKinter, GTK, QT, wx нечто похожее или оболочку вокруг которой лежит PythonCard. С помощью вы можете подключить событие, например щелчок по элементу, к методу, который должен содержать ваш код. Таким образом, код не запускается в цикле, но только тогда, когда происходит щелчок. Фактический код сильно зависит от используемой вами структуры графического интерфейса, но вы не указали никакой информации об этом.
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 false. поэтому предположим, что если инструкция правильная, тогда код сломается, но если оператор if недействителен, код перейдет в инструкцию else и будет печататься. Нажмите кнопку со спином.
Спасибо.
- Интеграция не-threaded кода SQLAlchemy с Flask-SQLAlchemy
- Как ансамбль SVM и логистическая регрессия с python