使用渐近线完成程序

2024-10-03 13:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题可以用一种与语言无关的方式来回答,但我使用的是python(仅供参考)。你知道吗

我正在运行一个无限循环,需要在最后一分钟发现10个新对象时终止。你知道吗

例如:


while True:
    newobjs = dig_more_objects(obj)
    if less than 10 newobjs have been discovered over the last minute
        break

编辑:问题是:如何实现这一行:
if less than 10 newobjs have been discovered over the last minute


Tags: the对象语言ifhave方式overlast
3条回答

根据dig_more_objects的性质,您可能需要调整条件:

import time
results = []
while True:
    mark = time.time()
    newobjs = dig_more_objects(obj)
    elapsed = time.time() - mark
    results.append((newobjs, elapsed))
    count = 0
    threshhold = 0
    for objs, elapsed in results[::-1]:
        count += len(objs)  # or +1 of dig_more_objects only returns one at a time
        threshhold += elapsed
        if threshhold > 60.0 and count < 10:
            break

使用^{}保存发现对象的时间,如果弹出的值不到一分钟,并且deque中有9个或更少的项,则中断循环。如果有超过9件物品,别忘了把它推回去。超过一分钟的项目将被丢弃。你知道吗

您可以尝试使用带有计时器的multiton pattern并设计这样一个类。参见this了解想法

相关问题 更多 >