我使用python中的statistics库中的mode函数编译了一个小代码。代码基本上是从传感器获取输入,将它们列在10个输入的数组中,然后在该列表中找到模式。问题是只要有两个相同的值,代码就会给出“统计错误:没有唯一模式”。在
我希望它打印值较小的数据,而不是给出错误。如果我可以访问mode函数生成的列表,然后比较“2个或更多个模式”,这可能是可能的,但我不太知道如何去做。在
import RPi.GPIO as GPIO
import time
import math
import statistics
GPIO.setmode(GPIO.BCM)
TRIGA = 23
ECHOA = 24
TRIGB = 17
ECHOB = 27
dist_lista=[]
dist_listb=[]
print "Distance Measurement In Progress"
GPIO.setup(TRIGA,GPIO.OUT)
GPIO.setup(ECHOA,GPIO.IN)
GPIO.setup(TRIGB,GPIO.OUT)
GPIO.setup(ECHOB,GPIO.IN)
GPIO.output(TRIGA, False)
print "Waiting For Sensor To Settle"
time.sleep(1)
GPIO.output(TRIGB, False)
time.sleep(1)
def roundoff(x):
return int(math.ceil(x/10.0))*10
def function(TRIG, ECHO, var):
dist_list = []
for i in range (0,10):
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = roundoff(distance)
dist_list.append(distance)
time.sleep(0.01)
if(distance<350 and distance>40):
try:
print "Distance",var, ":", statistics.mode(dist_list),"cm"
except statistics.StatisticsError as e:
print "Error: ", e
time.sleep(0.1)
while True:
function(TRIGA, ECHOA, "A")
function(TRIGB, ECHOB, "B")
GPIO.cleanup()
提前谢谢你
使用此函数代替
statistics.mode
:然后,可以使用以下调用替换代码中的整个try except块:
^{pr2}$相关问题 更多 >
编程相关推荐