2016-02-29 78 views
-3

也许我在想困难,但我想知道在for循环完成后是否可以执行代码?重复完成后运行代码

我需要一种知道循环完成的机制,并在for循环完成时执行代码。

简单的例子:

numbers = ['1','2','3','4','5'] 
length_numbers = len(numbers) 

for i in range(0, length_numbers): 
    print(i) 
    if i == length_numbers + 1: 
     print("yep list is finished and execute code below") 
     # .... <-- code will be placed here 

这是行不通的,因为i值永远不会成为我肯定有一个简单的方法来解决这个值5。任何人都可以告诉我如何实现这一目标?也许我应该改变结构,而不是使用for循环?

+3

我不确定我是否理解你的问题...放在for循环后面的代码__will__在for循环完成后执行。 –

+2

把代码放在循环之外?循环结束后立即执行代码,这是所有编程语言的基本前提。 –

+0

我想op想要类似atexit()的循环 – AlokThakur

回答

2

由于蟒蛇的编号系统从0开始,如果你想你上面写的代码工作,你需要改变if i == length_numbers + 1到零下1 - if i == length_numbers - 1和代码将作为你想让它。

因此,对于你的例子:

numbers = ['1','2','3','4','5'] 
length_numbers = len(numbers) 

for i in range(0, length_numbers): 
    print(i) 
    if i == length_numbers - 1: # change to minus here 
     print("yep list is finished and execute code below") 
     # .... <-- code will be placed here 
+0

谢谢!这正是我想要的。我认为这是一个简单的快速修复。感谢您的答复。 – Rotan075

1

为什么不只是使用if i == length_numbers - 1:所以代码在最后一次迭代结束时执行(介意range(0, length_numbers) = [0, 1, ..., length_numbers - 1])?或者将代码放在for循环后面。

这样的:

numbers = ['1','2','3','4','5'] 
length_numbers = len(numbers) 
for i in range(0, length_numbers): 
    print(i) 
    if i == length_numbers - 1: 
     print("yep list is finished and execute code below") 
     # .... <-- code will be placed here 

或本:

numbers = ['1','2','3','4','5'] 
length_numbers = len(numbers) 
for i in range(0, length_numbers): 
    print(i) 
print("yep list is finished and execute code below") 
# .... <-- code will be placed here 
0

只是要如果len(数字)== I + 1:

1

怎么样简单的方法?

numbers = ['1','2','3','4','5'] 
length_numbers = len(numbers) 

for i in range(0, length_numbers): 
    print(i) 

print("yep list is finished and execute code below") 
2

,如果你的号码是固定然后下面的代码可以正常工作。

只是

if i == length_numbers - 1: 

即使数字是不固定的替代

if i == length_numbers + 1: 

。你只用LEN()函数&当你开始循环从零,你可以检查我

length_num = len(numbers) # get the length of numbers 

    if i == length_num - 1 # check if i reached last val 
     # stuff you want to do 

希望的值这有助于

2

您可以使用else声明得到它的长度。

for i in xrange(10): 
    #loop body 
    pass 
else: 
    #do this when loop is completed without any break 
    pass