python无限循环意外结束
当运行这个代码程序时,它将随机停止,它不会出现错误,它只是停止,它也永远不会到达flag3,我用flags测试了这个,没有电机控制同样的问题,我会过载吗,它只是退出,请帮助python无限循环意外结束,python,loops,while-loop,infinite,Python,Loops,While Loop,Infinite,当运行这个代码程序时,它将随机停止,它不会出现错误,它只是停止,它也永远不会到达flag3,我用flags测试了这个,没有电机控制同样的问题,我会过载吗,它只是退出,请帮助 import time import display import servo import moter import pic import button import RPi.GPIO as GPIO def main(): GPIO.cleanup() moter.init() servo
import time
import display
import servo
import moter
import pic
import button
import RPi.GPIO as GPIO
def main():
GPIO.cleanup()
moter.init()
servo.init()
display.init()
pic.init()
moter.start()
#servo.start()
try:
while True:
d = pic.mesure()
print "Flag1"
while d > 100:
moter.start()
moter.forward(90)
d = pic.mesure()
print d
moter.stop_drive()
print "Flag2"
print "Flag3"
except KeyboardInterrupt:
GPIO.cleanup()
pass
GPIO.cleanup()
if __name__ == '__main__':
#debug("----------========== Starting session! ==========----------")
main()
您在
循环中没有任何中断,而True:
循环-为什么您希望它会结束?它不会到达标志3
。永远
它要么永远运行外部循环,要么陷入pic
或moter
(sic)调用中,要么引发异常并退出
该程序的输出将是非常宝贵的,有助于找出这些情况中的哪些实际发生
例如,您是否看到flag1
?那么flag2
呢?还是所有的d
值
在异常区域中放置一个打印
,然后在块之后尝试
并查看是否打印出来
如果在调试过程中没有每隔几行打印一条语句,您就没有认真对待它:-)我怀疑抛出了异常。请尝试打印异常以查看问题所在,或删除Try块并查看错误所在的行。我不认为程序正在停止,但在此之后,它将无法执行任何操作。您启动while语句,它在代码中运行,然后没有被告知停止,因此它从语句的顶部开始,但它没有任何操作,因此它重新开始。你可以试试:
while True:
d = pic.mesure()
print "Flag1"
while d > 100:
moter.start()
moter.forward(90)
d = pic.mesure()
print d
moter.stop_drive()
print "Flag2"
break
print "Flag3"
这将停止循环并继续程序 我不认为这是子程序,因为我已经注释掉了它们,仍然有相同的问题,哈哈,我会添加更多的打印到目前为止,我得到了标志1和2,但我会添加更多,看看有什么问题,谢谢