gpt4 book ai didi

python - while python 中不满足条件

转载 作者:行者123 更新时间:2023-11-30 23:31:18 25 4
gpt4 key购买 nike

嗯,我正在尝试开发一个家庭警报器,它根据从 PIR 模块收到的反馈来拍照(使用树莓派及其 GPIO)。

问题如下。当 PIr 被触发时,拍摄 5 张照片,然后转到在接下来的 5 秒内继续检查另一个触发的功能,或者直到再次触发。

只有在 5 秒过去 (time.time() < start + secs) 且未检测到任何移动(Curren_State 保持 == 0)的情况下,它才会退出 while

我遇到问题的代码块:

#secs is received as a parameter (let's say the integer 5)

while time.time() < start + secs or not Current_State==True:
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1:
takePics(3)

问题:当我提出这个条件时(没有 OR):

while time.time() < start + secs:
#CODE

脚本似乎表现正常:如果 5 秒过去了,它就会消失。但是,如果我添加了 while 条件(*或不是 Current_State==True*),它就不会满足第一个条件,因为我在每个循环中显示 time.time() 和 < em>start + secs,我看到第一个比第二个大,并且仍然继续执行 while。

所以我仍在开发代码,但代码或多或少是这样的。如果下面的代码总结得不好:http://pastebin.com/0xP4Le1U

# Import required Python libraries

# Here I define GPIO stuff

# Photo dimensions and rotation

# global variables
Current_State=0
Previous_State=0


def takePics(nPics):
#Here I take pics

def reCheck:
global Current_State, alert

alert=0
start = time.time()
Current_State = 0

while time.time() < start + secs or not Current_State==True:
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1:
takePics(3)

#If there's no movement, this alert remains =0
#and will exit the "while" from which it was called
alert=1

#Here I have more functions like sendEmail and so on

def main():
#main code

while True:

#SOME CODE

if Current_State==1 and Previous_State==0:
print "----> Motion detected!"

Previous_State = 1
alert=1

#sendMail()
switchLightON() # Switch on the light using the relay
takePics(5)

while alert==1:
reCheck(4) # we check again in case movement was detected in reCheck

if __name__ == "__main__":
main()

最佳答案

or更改为and。或者,考虑将 not Current_State==True 简化为 Current_State is not True,或者如果 Current_State 是 bool 值。

while time.time() < start + secs and Current_State is not True:
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1:
takePics(3)

这将循环直到 secs 秒过去,或者 Current_State 不再为 true。诀窍在于 while 仅在条件为 false 时停止。仅当两个条件都为假时,or才为假,如果其中一个条件为假,则and为假。

关于python - while python 中不满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com