我有一个循环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循环。
答案 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