Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python无限循环意外结束_Python_Loops_While Loop_Infinite - Fatal编程技术网

python无限循环意外结束

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

当运行这个代码程序时,它将随机停止,它不会出现错误,它只是停止,它也永远不会到达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.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,但我会添加更多,看看有什么问题,谢谢