2014-02-26 16 views
0

我知道这个问题可能不清楚。我会试着解释。如何获得正向容差不落后

我遇到的情况,我需要核实的价值5,10,15,20....,序列只产生序列的系统也不是很准确的,有时它可以错过值或重复几个值的像5, 10,10,20,25,30,40.

因此,作为你可以看到有一个公差5-10

这没关系。我必须验证使用通行证,如果它看到偶有遗漏或重复单调递增序列的逻辑顺序不走回头路像5,10,15,10.. or 5,10,9,....

我需要写一个PASS FAIL条件,如果它看到的值去失败向后或超过10 (like 5, 20, 15...)

不同可有人请帮我鉴定正确的逻辑,这

+0

什么顺序?它是一个列表,一个文件还是一个流?请显示一些代码。 –

+0

你有变量打印出的序列是?如果你确实检查if(b> a){return false} – KRUKUSA

回答

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! 

如果列表中包含您作为输入的列表,那么您可以用原始列表将列表压缩,然后遍历该元组。

1

一行代码:

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

如果你真的想要断定你的数据从一个单调增加乘5源起源,你也可能要钉在一些逻辑的最大值你的序列(li[-1])大约是5*len(li) + li[0]

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'