问题描述
我正在尝试创建一段代码,该代码将监视计数器,其输出类似于:
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 (将#修改为@)