为什么当我开始在第一个循环中循环时我的循环会中断?

2024-09-30 06:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在循环中循环,当第二个循环开始时,第一个循环立即停止。我需要检查RELE1是否为真,我只需要打印一次例如“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);    

Tags: 代码true报警inputgpioifsetupout
1条回答
网友
1楼 · 发布于 2024-09-30 06:32:54

你有一个无限循环。这永远不会终止:

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);    

相关问题 更多 >

    热门问题