Я пишу код для системы охранной сигнализации, которая работает в течение заданного промежутка времени и позволяет пользователю вводить код до трех раз. Если код не был введен правильно в течение 3 раз, у меня есть оператор печати (со временем добавит его с большим количеством кода), который работает как определено, проблема в том, что мне нужно время ожидания для выполнения некоторого кода аналогичным образом. Например, если тайм-аут, а затем сделать это (по сути, перейти к той же строке кода, к которой относится ошибка ввода)
TIMEOUT = 7 # number of seconds your want for timeout
keycode ="0000";
count = 3
def interrupted(signum, frame):
"called when read times out"
print ('Input timeout!! Contacting Owner!')
signal.signal(signal.SIGALRM, interrupted)
def input():
try:
count = 3
for i in range(3,0,-1):
userIn= raw_input("Enter the security code to disable the alarm
system\n");
if userIn != keycode :
count = count-1;
print ("Incorrect Password...Tries Remaining", count);
else:
print("Password accepted, security system offline");
#BRANCHING CODE GOES HERE
break
if count == 0:
print("Contacting Owner!");
#BRANCHING CODE GOES HERE
except:
return
# set alarm
signal.alarm(TIMEOUT)
s = input()
# disable the alarm after success
signal.alarm(0)
После тайм-аута сообщение выводит Тайм-аут ввода !! Обращаясь к Владельцу !, но пользователь все еще может ввести пароль. Это явно не очень хорошая сигнализация! В идеале я мог бы создать оператор или в случае типа "if count == 0 или TIMEOUT: True".