2012-12-19 5 views
2

while 휴식하지 않을 때 내가 루프에서> 10 :파이썬에서 내부 for 루프에서 while 루프를 깨는 방법?

i = 0 
x = 100 
while i<=10: 
    for a in xrange(1, x+1): 
     print "ok" 
     i+=1 

하고 "ok" 100 회 인쇄합니다. 루프를 깨는 방법 whilei에 도달하면 루프가 for 루프?

+4

그냥 함수에 넣고 내부 루프에서 돌아옵니다. – sshannin

+0

<= 대신 <=를 사용하는 이유는 무엇입니까? 이것은 오타입니까? 아니면이 기능이 있습니까? –

+0

아니요 오타입니다. – alwbtc

답변

6

내부 루프가 "반환"될 때까지 외부 루프의 조건은 다시 검사되지 않습니다. 당신이 i 변경 후마다 일이이 검사를 필요로하는 경우, 대신에이 작업을 수행 :

while i<=10: 
    for a in xrange(1, x+1): 
     print "ok" 
     i+=1 
     if i > 10: 
      break 

break 그것은 단지 내부 루프를 종료하지만, 외부 루프 조건이 False로 평가하기 때문에, 너무 그것을 종료됩니다.

+1

for 루프 뒤에 아무 것도 추가하지 말거나 내부 루프가 끊어진 후에 실행되도록하십시오. –

+0

@Matt Briançon 예 ?? 'for'는 휴식을 취하는대로 곧 깨질 것이라고 생각 했나요? – alwbtc

+3

@alwbtc'while'은 다음 중 하나가 발생하지 않으면 중단되지 않습니다 : a) 몸체에있는 동안 'break'를 호출합니다 (엄격히 말하면 몸체가 아니라 내부의 루프 안에 있음). b) 본문이 실행을 끝내고 조건이 '거짓'으로 평가됩니다. c) 본문에있는 동안 (계속해서) '계속'이라고 부르면 조건은 '거짓'으로 평가됩니다. – mgibsonbr

4
i = 0 
x = 100 
def do_my_loops(): 
    while i<=10: 
    for a in xrange(1, x+1): 
     print "ok" 
     i+=1 
     if time_to_break: 
     return 
do_my_loops() 

여기서 time_to_break은 확인중인 상태입니다.

또는 일반적으로

:

def loop_container(): 
    outer_loop: 
    inner_loop: 
     if done: 
     return 

loop_container() 
1

문제는 외부 루프의 조건이 내부 루프가 완료 될 때까지 확인되지 않을 것입니다 - 그리고이 시점에서 i 내 관점에서 이미 100입니다, 올바른 방법 i은 10

for a in xrange(1, x+1): 
    if i < 10: 
     print "ok" 
     i+=1 
    else: 
     break 

에 도달했을 때 당신이하는 동안 외부 루프를 중단 할 이유는 '다른 이유가있는 경우이를 작성하고 얻기 위해 원하는 출력을 내부 루프 내부의 경비를 넣어 파괴하는 것입니다 안쪽 루프 안쪽에 당신이 그것을 더 잘 이해하기 위해 세부 사항에 우리를 들여 보내 주시겠습니까?

관련 문제