Python:真或假

时间:2014-08-25 10:50:55

标签: python while-loop boolean boolean-logic

我不是一名经验丰富的程序员,我的代码有问题,我认为这是我的逻辑错误,但我在http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/whilestatements.html找不到答案。 我想要的是检查串行设备是否被锁定,“它被锁定”和“它没有被锁定”的条件之间的不同之处在于,行中有4个逗号,,,,,其中包含{{ 1}}字母。所以如果没有GPGGA我希望我的代码启动,但我想我的循环是错误的。任何建议将不胜感激。提前谢谢。

,,,,

。 。

2 个答案:

答案 0 :(得分:7)

使用break退出循环:

while True:
    ser = serial.Serial("/dev/ttyUSB0", 4800, timeout =1)
    checking = ser.readline();
    if checking.find(",,,,"):
        print "not locked yet"
    else:
        print "locked and loaded"
        break

TrueFalse行在您的代码中没有执行任何操作;它们只是引用内置的布尔值而不将它们分配到任何地方。

答案 1 :(得分:2)

您可以将变量用作while循环的条件,而不仅仅是while True。这样你就可以改变条件。

所以不要使用此代码:

while True:
    ...
    if ...:
        True
    else:
        False    

...试试这个:

keepGoing = True
while keepGoing:
    ser = serial.Serial("/dev/ttyUSB0", 4800, timeout =1)
    checking = ser.readline();
    if checking.find(",,,,"):
        print "not locked yet"
        keepGoing = True
    else:
        keepGoing = False    
        print "locked and loaded"

编辑:

或者正如另一位回答者建议的那样,你可以break离开循环:)