#python #loops #gpiozero
#питон #петли #gpiozero
Вопрос:
Я создал for
цикл, который будет выполнять таблицы умножения одним нажатием кнопки, используя gpiozero, и хочу сделать длительное нажатие для выхода из цикла.
Первоначально я думал, что смогу создать функцию с a break
в ней, которая будет выходить из цикла с помощью длительного нажатия, но поскольку break
она находится вне цикла, я получаю синтаксическую ошибку, независимо от того, я ожидаю, что это будет интерпретироваться как выход из функции, а не из цикла, в котором вызывается функция.
Другая идея состоит в том, чтобы сделать что-то вроде — когда false завершает все циклы — и команда в for
цикле переключает это условие на false. Это не то, что я описывал в каких-либо руководствах, и я не уверен, какую терминологию я бы искал, чтобы узнать, можно ли это сделать.
Как я могу этого добиться?
import gpiozero
import time
from signal import pause
button = gpiozero.Button(2, hold_time=0.5)
#button wired to gpio 2, long press activates after .5 seconds
a = int(input('Choose a number: '))
print('Press the button to do times tables.')
print('Hold the button to tell maths to quit.')
def cont():
print('quit maths')
#this is where I initially tried to use a break
for x in range(1, 13):
button.wait_for_press()
button.when_held = cont
button.wait_for_release()
print('7 x', x, '=', x * a, flush=True)
pause()
Ответ №1:
Вы можете raise
создать исключение внутри cont
и иметь try/except
предложение внутри вашего цикла for и выйти из него.