python无限循环意外结束

时间:2014-09-24 03:47:06

标签: python loops while-loop infinite

当运行这个代码程序将随机停止,它没有给出错误它只是停止它也永远不会到达flag3,我测试这只有标志没有电机控制相同的问题,我可以重载somthing,它只是退出,请帮助

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

4 个答案:

答案 0 :(得分:0)

你在break循环中没有任何while True: - 你为什么期望它永远结束?

答案 1 :(得分:0)

赢了flag3。永远!

它将永远运行外部循环,陷入picmoter(原文如此)调用之一,或引发异常并退出。

该程序的输出在确定哪些案例实际发生时非常宝贵。

例如,您看到flag1了吗?那么flag2呢?或者所有d值?

print放在例外区域和try块之后,看看是否

如果您在调试过程中每隔几行都没有print语句,那么您就不会认真对待它: - )

答案 2 :(得分:0)

我怀疑抛出异常。尝试打印异常以查看问题所在或删除try块并查看它出错的行。

答案 3 :(得分:0)

我不认为该程序正在停止,但在此之后它根本无法做任何事情。你启动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"

这将停止循环并继续程序。