如何获得向前的公差而不是向后的公差

时间:2014-02-26 06:05:00

标签: python python-2.7 python-idle verify fault-tolerance

我知道这个问题可能不清楚。我会尝试解释。

我有一个场景,我需要验证一系列值5,10,15,20....,,只是生成序列的系统不是很准确,有时它可能会错过值或重复几个值,如{{1} }

因此,您可以看到5, 10,10,20,25,30,40.的容差。

这没关系。我必须验证序列不会像5-10

那样倒退

我需要使用一个逻辑来写一个 PASS FAIL 条件,如果它看到单调增加的序列,偶尔会有错过或重复,如果它看到值向后或者差异超过{{1 }}

有人可以帮我识别正确的逻辑吗

3 个答案:

答案 0 :(得分:1)

一衬垫:

def validate(li):
    return all(x==y or 5<=(y-x)<=10 for x,y in zip(li,li[1:]))

如果你真的想断言你的数据来自一个单调增加的5来源,你也可能想要强调你的序列的最大值(li[-1])大约是{的一些逻辑。 {1}}。

答案 1 :(得分:0)

如何简单:

previousVal = ###
actualVal = ###

difference = actualVal - previousVal

if 0 <= difference <= 10  ## Change acc. to your requirement. Unclear if its 5-10 or 0-10
    #PASS
else:
    #FAIL!

如果它是一个你输入的列表,那么你可以用一个按位移的列表压缩原始列表,并迭代元组。

答案 2 :(得分:0)

如果序列是l列表,您可以使用:

'FAIL' if any(l[i]<l[i-1] or l[i]-l[i-1]>10 for i in xrange(1,len(l))) else 'PASS'