Почему мой цикл прерывается, когда я начинаю цикл внутри первого цикла? - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь выполнить цикл внутри цикла, и когда начинается второй цикл, первый останавливается мгновенно.Мне нужно проверять бесконечность, если RELE1 имеет значение True, и мне нужно напечатать, например, «Alarm» только один раз, потому что я повторяю цикл во второй раз, чтобы проверить, будильник 0 или 1. Вот мой код:

while True: 
           if (GPIO.input(RELE1) == True):
                print('3.3')
                GPIO.setup(RELE360, GPIO.OUT)

                alarm = 0
                while 1:
                    if (GPIO.input(RELE0) == True):
                        alarm += 1
                        if(alarm == 1 ):
                            print('alarm')
                    else:
                        alarm = 0

           else:
                print('0')
                GPIO.setup(RELE360, GPIO.IN)
                sleep(1);    

1 Ответ

0 голосов
/ 17 октября 2018

У вас есть бесконечный цикл.Это никогда не прекратится:

while True: 
           if (GPIO.input(RELE1) == True):
                print('3.3')
                GPIO.setup(RELE360, GPIO.OUT)

                alarm = 0
                while 1:
                    if (GPIO.input(RELE0) == True):
                        alarm += 1
                        if(alarm == 1 ):
                            print('alarm')
                    else:
                        alarm = 0
                    # -- you will never escape this loop! --

           else:
                print('0')
                GPIO.setup(RELE360, GPIO.IN)
                sleep(1);    

Вы можете просто удалить цикл или break, чтобы избежать его.

while True:
    if some_condition:
        break # this will exit the loop

В качестве альтернативы, вы можете просто свернуть второй цикл впервый;глядя на ваш код, кажется, что вы могли бы сделать это:

alarm = 0
while True: 
           if (GPIO.input(RELE1) == True):
                print('3.3')
                GPIO.setup(RELE360, GPIO.OUT)

                if (GPIO.input(RELE0) == True):
                    alarm += 1
                    if(alarm == 1 ):
                        print('alarm')    
           else:
                print('0')
                GPIO.setup(RELE360, GPIO.IN)
                sleep(1);    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...