【问题标题】:Statistics Mode function Exceptions in PythonPython 中的统计模式函数异常
【发布时间】:2018-09-21 15:05:11
【问题描述】:

我使用 python 统计库中的 mode 函数编译了一个小代码。代码基本上是从传感器获取输入,将它们列在 10 个输入的数组中,然后在该列表中查找模式。问题是一旦有 2 个相同的公共值,代码就会给出“StatisticsError: no unique 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()

提前谢谢你

【问题讨论】:

    标签: python math statistics gpio


    【解决方案1】:

    使用这个函数代替statistics.mode:

    def lower_mode(sequence):
        try:
            return statistics.mode(sequence)
        except statistics.StatisticsError as e:
            return sorted(sequence)[len(sequence)//2 - 1]
    

    然后,您可以使用此调用替换代码中的整个 try-except 块:

    if(distance < 350 and distance > 40):
        print "Distance", var, ":", lower_mode(dist_list), "cm"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2020-07-21
      • 2021-10-28
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多