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

#python #python-3.x #keyboardinterrupt

#python #python-3.x #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. Вы хотите, чтобы исключение не создавалось в первую очередь, или просто справиться с ним по-другому?

2. Я просто хочу, чтобы пользователь нажал ctrl c один раз, а затем запретил ctrl c что-либо делать после этого, я не знаю лучшего способа сделать это.

Ответ №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
  

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

Комментарии:

1. Вот и все! Большое вам спасибо!