2010-03-27 126 views
0

我有一个书面的循环,如果条件和我想打破完全循环时,如果得到满足。在Jython中打破循环

while count: 
    i=0 
    for line in read_record: 
     #print str.strip(count[1:28]) 
     #print str.strip(read_record[i]) 
     if string.find(str.strip(read_record[i]),str.strip(count[1:28]))>0: 
      code=str.strip(read_record[i+19])+str.strip(read_record[i+20]) 
      print code[25:] 
      break 

     i=i+1 

所以在这里,如果if string.find条件得到满足我想去while循环流动。请告诉我什么是最好的休息场所,我应该如何修改程序,以便一旦满足if条件,我就会退出循环,并用while循环重新开始。

回答

0

您的代码已经做到了。虽然目前还不清楚为什么你需要嵌套循环,以及那些神奇的数字是什么。这是你的代码重构一个位的可读性:

while count: # while len(count) > 0 
    for i, record in enumerate(read_record):   
     if count[1:28].strip() in record: 
      code= ''.join(map(str.strip, read_record[i+19:i+21])) 
      print code[25:] 
      break 
    else: 
     # no break occurred 
     pass 
+0

感谢它的工作 – kdev 2010-03-27 16:11:15

0

根据你写的内容,你的代码就是这样做的。由于for循环是while循环的最后一部分,因此打破它将直接进入while循环的下一次迭代。

如果有while循环,你已经忽略更多的代码,然后将其移动到for循环的else子句将导致它只有在for循环不破运行:

for i in someit: 
    ... 
else: 
    print 'for loop did not break' 

虽然只是一个风格问题。而不是维护自己的计数器,请使用:

for i, line in enumerate(read_record): 
0

我不知道如果你真的这样做,你打算用什么i。也许你想这样的事情:

while count: 
    for line in read_record: 
     if str.strip(count[1:28]) in read_record: 
      code=str.strip(read_record[:20])+str.strip(read_record[20:]) 
      print code[25:] 
      break 
+0

感谢它帮助我 – kdev 2010-03-27 16:16:13