在Jython中打破循环

时间:2010-03-27 05:02:11

标签: jython

我有一个循环for和if条件,我想在if得到满足时完全循环。

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循环。

3 个答案:

答案 0 :(得分: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):

答案 1 :(得分: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

答案 2 :(得分: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