观看计数器,总计和计数错过的计数

问题描述

我正在尝试创建一段代码,该代码将监视计数器,其输出类似于:

a1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,1,30]

我希望代码能够统计总数,并告诉我例如发生这种情况时错过了多少计数:

a1 = [1,2]

我总共仍然会得到92个,但是得到的反馈是缺少8个。

我与以下代码非常接近:

Blk_Tot = 0

CBN = 0
LBN = 0
x = 0
y = 0
z = 0
MissedBlocks = 0

for i in range(len(a1)):
    CBN = a1[i]
    if CBN - LBN <= 0:
        if LBN == 30:
            y = 30 - abs(CBN - LBN)
        elif LBN < 30:
            z = 30 - LBN
            y = 30 - abs(CBN - LBN) + z
            print(z)




        Blk_Tot = Blk_Tot + y
    else:
        x = CBN - LBN
        Blk_Tot = Blk_Tot + x
        if x > 1:
            MissedBlocks = MissedBlocks - 1 + x
    LBN = CBN


print(Blk_Tot)

print(MissedBlocks)

如果我删除1到30之间的任何位置,它都可以正常工作,但是如果我删除30,例如29,2,它会中断。我不希望它能够连续丢失30个能够得出适当的总数。

任何人都对如何实现这一目标有任何想法?我感觉好像缺少一个明显的答案:D

对不起,我想我不清楚,a1是一个来自外部设备的计数器,该计数器从1到30计数,然后又回绕到1。每个计数实际上都是消息的一部分,以表明已收到消息。所以说1 2 4,我知道第三个消息丢失了。我正在尝试做的是找出应该收到的总数以及计数中缺少多少。

在下面的帖子中提出想法后进行更新,这可能是另一种方法:

输入:

123456

列表[1,6]

1。检查第一个输入以查看列表中的哪个部分并从那里开始(以防我们不从零开始)

2。每次收到输入时,请检查输入是否与数组中的下一个值匹配

3。如果不是,那么需要多少步骤才能找到该值

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)