2016-10-20 3 views
3
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 
verwendet wurde

Hier wird der Zähler wird weiterhin bis zählen unitl es die crashNumber erreicht, wenn Ctrl + C gedrückt wird, wird die Zahl nehmen, dass die counter an und Verwenden Sie es für die Multiplier später verwendet werden.Deaktivieren KeyboardInterrupt, nachdem er einmal

Allerdings möchte ich nur dem Benutzer die Möglichkeit geben, dies einmal zu drücken, dann ist es deaktiviert. Kann man das irgendwie machen?

+0

Möchten Sie verhindern, dass die Ausnahme von vornherein ausgelöst wird, oder einfach nur anders damit umgehen? – brianpck

+0

Ich möchte nur, dass der Benutzer ctrl + c einmal drücken und dann ctrl + c daran hindern, irgendetwas danach zu tun, ich kenne den besten Weg nicht. – RossC

Antwort

1

Die KeyboardInterrupt Ausnahme wird ausgelöst, ob Sie es wollen oder nicht: die Lösung besteht also darin, die Ausnahme auf verschiedene Arten in Ihrem except Block zu behandeln. Meine gewählte Implementierung wird eine einfache Boolesche Wert verwenden, der als True beginnt und zu False auf der ersten Unterbrechung gesetzt:

import time 

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

Lassen Sie mich wissen, ob dies Ihren Anwendungsfall anspricht.

+1

Das war's! Vielen Dank! – RossC

Verwandte Themen