代码如下:
def check_ultra():
global arduinoSerialData, y, i, x
while True:
if arduinoSerialData.inWaiting() > 1:
myData = arduinoSerialData.readline()
myData = str(myData)
myData = myData.replace("b'", '')
myData = myData.replace("\\r\\n'", str(0))
myData = myData.replace("\\r00.000", str(0))
myData = myData.replace("\\r00.000", str(0))
if "c" in myData:
myData = myData.replace("c", str(0))
if y == 1:
y = 3
if float(myData) > 15:
x = 0
return y, x
else:
if float(myData) < 15 and float(myData) > 1:
y = 1
x = 0
return y, x
elif "a" in myData:
myData = myData.replace("a", str(0))
if y == 2:
y = 3
if float(myData) > 15:
x = 0
return y, x
else:
if float(myData) < 15 and float(myData) > 1:
y = 2
x = 0
return y, x
else:
y = 0
return y
set_servo1_angle(0)
set_servo2_angle(90)
go_out_count = 0
m1 = 0
count = 3
y = 0
i = 0
x = 0
while y == None or y == 0 or x == 1:
# i = 0
# y = None
check_ultra()
if y == 1 and x == 0:
print("1")
sleep(2)
elif y == 2 and x == 0:
print('2')
sleep(2)
当前的功能是每次传感器1被阻止时打印1,但随后结束代码。我希望这样,每次我阻塞传感器时,它都会打印相应的打印语句,无论我阻塞传感器多少次。我尝试添加许多变量来帮助解决问题,但都不起作用。如何使循环不断重复
最外层的循环具有以下条件:
y==None or y==0 or x==1
。其中的if
语句只有在所有这些条件都为False
时才会打印。这意味着循环保证在第一次打印输出时终止如果希望循环无限期地继续,请忽略所有内容并继续。将回路替换为
在一个不相关的音符上,尽量避免使用全局。当您将它们设置在遗忘已久的位置时,它们可能会产生不可预测的副作用,通常会使代码更难维护。改为使用参数和返回值
例如:
你可以称之为
“break”语句结束while循环,因此请尝试将其替换为“pass”,如下所示:
相关问题 更多 >
编程相关推荐