2017-05-15 55 views
0

仍然是Python中的NOOB。卡住很多次。 脚本依次运行3个序列,每个序列20秒。 每个序列都有一个while循环。和超时声明。 然后它开始下一个循环,依此类推直到 第3循环结束。然后退出。我想从头开始。 我可能有太多的while循环。需要重启循环

#!/usr/bin/env python 

# Import required libraries 
import time 
# More setup 

# Choose a matrix to use 
mat = mat1 
t_end = time.time() + 20 
#Start loop 
while time.time() < t_end: 
    # code 
    # loop timeout 

# 2 more loops follow just like first one, except matrix becomes 
mat = mat2 
mat = mat3 
+3

如果mat2'的'操作和'mat3'是完全相同的'mat'然后开始学习功能。 – donkopotamus

+0

如果三个循环相似,则不应重复自己,而应将其包装在以mat1,mat2或mat3作为参数的通用函数中。然后,你可以做我的功能(mat2),它会更容易构建你的程序。谷歌“功能”。 – Joooeey

回答

0

正如其他人已经评论过的,你应该在一个函数中做任何重复的任务。在Python中,函数是使用“def”关键字定义的。

import time 

# Replace these dummy assignments with real code 
mat1 = "blah" 
mat2 = "rhubarb" 
mat3 = "custard" 

def processMatrix(matrix, seconds=20): 
    t_end = time.time() + seconds 
    while time.time() < t_end: 
     pass # 'pass' does nothing - replace with your real code 

processMatrix(mat1) 
processMatrix(mat2) 
processMatrix(mat3) 

请注意,我还包含时间/秒,作为函数的参数:使用一个功能,它可以如下进行。这给了你更多的灵活性,以防你想要为不同的测试时间或每个矩阵的不同时间等。但是,我已经完成了它的默认值为20,所以你不需要包含它函数调用。如果你想覆盖,你可以调用默认的,例如,

processMatrix(mat1, 5) 

代替,

processMatrix(mat1)