Отключение KeyboardInterrupt после того, как он был использован один раз

Cont = 1
while Cont == 1:
    try:
        while Cont == 1:
            counter = counter + 0.1
            counter = round(counter, 1)
            print(counter)
            time.sleep(0.1)
            if counter == crashNumber:
                Cont = 0
    except KeyboardInterrupt:
        Multiplier = counter

Здесь счетчик будет продолжать считать, пока не достигнет crashNumber, когда Ctrl + C нажата, он будет принимать число, которое counter на и использовать его для Multiplier будет использоваться позже.

Однако я только хочу дать пользователю возможность нажать эту кнопку один раз, затем она будет отключена. Есть ли способ, которым это можно сделать?

1 ответ

Решение

KeyboardInterrupt будет выдано исключение, хотите вы того или нет: решение, таким образом, заключается в том, чтобы по-разному справляться с исключением except блок. Моя выбранная реализация будет использовать простое логическое значение, которое начинается как True и установлен в False при первом прерывании:

import time

allow_interrupt = True
while True:
    try:
        time.sleep(1)
        print ('...')
    except KeyboardInterrupt:
        if allow_interrupt:
            print ('interrupted!')
            allow_interrupt = False

Дайте мне знать, если это касается вашего варианта использования.

Другие вопросы по тегам