2010-03-27 13 views
0

나는 조건을 만족하는 경우 루프를 작성하고 조건이 만족되면 루프를 완전히 종료하려고합니다.자이 썬에서 루프 깨기

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 조건이 만족되면 나는 루프 플로우 동안 가고 싶다. 중단 할 가장 좋은 장소가 무엇인지 말해 주시고 어떻게 프로그램을 수정하여 if 조건을 만족 시키면 while 루프를 다시 시작하고 while 루프를 다시 시작하는지 알려주십시오.

답변

0

코드에서 이미이를 수행합니다. 왜 네스트 루프가 필요한지, 그 마법의 숫자는 무엇인지 명확하지 않습니다. 여기에 코드를 읽기 쉽도록 조금 리팩토링 : 당신은 정말 당신이 i과 함께하고자하는 일을하는 경우 궁금

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

0

작성한 내용을 기반으로 작성한 코드는 그대로입니다. for 루프는 while 루프의 마지막 부분이므로 중단하면 while 루프의 다음 반복으로 바뀝니다. 당신이 당신은 생략 한 것을 while 루프에서 더 많은 코드를 할 경우

, 다음 루프의 다른 조항에 대해로 이동하는 for 루프가 중단하지 않을 경우에만 실행되도록 발생할 수 :

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

한 가지 문체에만 문제가 있습니다. 자신의 카운터를 유지하는 대신 다음을 사용하십시오.

for i, line in enumerate(read_record): 
0

. 어쩌면 당신은 다음과 같은 것을 원할 것입니다 :

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

관련 문제