首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >满足条件后停止检查语句

满足条件后停止检查语句
EN

Stack Overflow用户
提问于 2016-05-03 20:20:07
回答 3查看 943关注 0票数 0

我有下面的程序,运行400秒,在while循环中,它遍历一个timecodes数组。当程序的运行时与某个timecodes相同时,它会执行一些操作。问题是,它每秒钟重复一次时间序列,目前它在满足条件的第二次中多次“执行”--我只希望它做一次.我该怎么做?

代码语言:javascript
复制
#!/usr/bin/env python3

import time

def get_sec(s):
    l = s.split(':')
    return int(l[0]) * 60 + int(l[1])

def sec_trim(s):
    l = s.split('.')
    return int(l[0])

times = [
    '00:07',
    '00:34',
    '00:59',
    '01:29',
    '02:22',
    '02:50',
    '03:05',
    '03:21',
    '04:07',
    '04:24',
    '04:58',
    '05:27',
    '06:03',
    '06:22',
    '06:36',
    '06:58',
    '07:07',
    '07:24',
    '07:45',
    '08:40',
    '08:51',
    '09:17',
    '09:31',
    '09:43',
    '10:01',
    '10:10',
    '10:30',
    '11:29',
    '11:42',
    '12:02',
    '12:14',
    '12:26',
    '12:51',
    '13:47',
    '13:58',
    '14:09',
    '14:33'
]



start_time = time.time()
elapsed_time = time.time() - start_time

while elapsed_time < 400:
    for item in times:
        elapsed_time = time.time() - start_time
        if get_sec(item) == sec_trim(str(elapsed_time)):
            print item
        # print sec_trim(str(elapsed_time))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-03 20:23:04

而不是对整个列表进行迭代:

  1. 由于列表是排序的,所以只检查第一项。
  2. 一旦到达第一项中给出的时间,将其从列表中弹出。
票数 2
EN

Stack Overflow用户

发布于 2016-05-03 20:33:28

我没有完全理解你的问题,但是如果你想每一秒按顺序运行代码,你可以使用time.sleep('seconds')

代码语言:javascript
复制
import time
start_time = time.time()
elapsed_time = time.time() - start_time
while elapsed_time < 400:
    for item in times:
        elapsed_time = time.time() - start_time
        if get_sec(item) == sec_trim(str(elapsed_time)):
            print item
    time.sleep(1.0)
票数 0
EN

Stack Overflow用户

发布于 2016-05-03 21:14:46

我接着写下了我对另一个答案的评论:

代码语言:javascript
复制
start_time = time.time()
elapsed_time = time.time() - start_time

# loop while we have times and we haven't run out of time
for next_str in times:
    if elapsed_time >= 400:
        break

    # if there's time to kill, go to sleep
    elapsed_time = time.time() - start_time
    wait_time = get_sec(next_str) - elapsed_time
    if wait_time > 0:
        time.sleep(wait_time)

    # do the thing
    print next_str
    # print sec_trim(str(elapsed_time))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37013626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档