Реализация «break» в функции и строение цикла «while»
Моя программа должна нажимать заданные клавиши и останавливаться при нажатии другой клавиши. В процессе возникла проблема:
Я указал в функции, что в конце должна происходить остановка через break, однако программу невозможно запустить, так как break находится вне цикла. При этом подчеркиваний нет, а функция задается и вызывается в циклах while.
def walking():
"""Walking function"""
print('Нажмите клавишу', Fore.BLUE + 'CTRL')
print(Style.RESET_ALL)
while True:
if key.is_pressed('ctrl'):
def stop_bot_check():
if key.is_pressed('alt'):
print(Fore.BLUE + 'Бот приостановлен')
print(Style.RESET_ALL)
global inf
inf = int(input('Чтобы возобновить работу бота, введите цифру "1" и нажмите CTRL: '))
break
Затем идет основной цикл, где и будет вызываться эта функция.
inf = 1
while inf == 1:
while not key.is_pressed('alt'):
stop_bot_check()
key.press('w')
time.sleep(1)
key.release('w')
time.sleep(1)
key.press('s')
time.sleep(1)
key.release('s')
stop_bot_check()
walking()
Все необходимые импорты у меня есть в начале программы. Полностью этот фрагмент кода будет выглядеть так:
def walking():
"""Walking function"""
print('Нажмите клавишу', Fore.BLUE + 'CTRL')
print(Style.RESET_ALL)
while True:
if key.is_pressed('ctrl'):
def stop_bot_check():
if key.is_pressed('alt'):
print(Fore.BLUE + 'Бот приостановлен')
print(Style.RESET_ALL)
global inf
inf = int(input('Чтобы возобновить работу бота, введите цифру "1" и нажмите CTRL: '))
break
inf = 1
while inf == 1:
while not key.is_pressed('alt'):
stop_bot_check()
key.press('w')
time.sleep(1)
key.release('w')
time.sleep(1)
key.press('s')
time.sleep(1)
key.release('s')
stop_bot_check()
walking()
Надеюсь на помощь! Заранее благодарю.
P.S. в коде, key -- сокращение от названия модуля keyboard:
import keyboard as key
Ответы (1 шт):
Может немного сменить подход?
def walking():
pass #Ваша логика
keyboard.add_hotkey('ctrl', walking)
keyboard.wait()
Если делать через add_hotkey то при нажатии заданной кнопки, каждый раз будет вызываться ваша функция. И как по мне, так будет проще продумать вашу логику.