我不是一名经验丰富的程序员,我的代码有问题,我认为这是我的逻辑错误,但我在http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/whilestatements.html找不到答案。
我想要的是检查串行设备是否被锁定,“它被锁定”和“它没有被锁定”的条件之间的不同之处在于,行中有4个逗号,,,,
,其中包含{{ 1}}字母。所以如果没有GPGGA
我希望我的代码启动,但我想我的循环是错误的。任何建议将不胜感激。提前谢谢。
,,,,
。 。
答案 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
True
和False
行在您的代码中没有执行任何操作;它们只是引用内置的布尔值而不将它们分配到任何地方。
答案 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
离开循环:)