이미지 출처: https://wikidocs.net/192339
반복문인 while구문을 배워보겠습니다. for문과는 조금 다르고 if문과 비슷합니다. if, for, while 구문들만 알고 있어도 어느정도 프로세스가 있는 프로그램을 만들 수 있습니다.
while 흐름제어 실습
while <expr>: <statement(s)> <- 작성하고 싶은 코드 작성
예1
n>0 보다 크면 계속해서 while문이 계속 반복되니까 5가 끈임없이 출력됩니다.
n = 5 while n > 0: print(n) >>> 5 5 5 5 5 5 . .
while문은 무한반복하거나 내가 원하는대로 작동하지 않을수 있기에 조건의 변화에 대해서 눈으로 또는 디버깅잘해야한다.
n = 5 while n > 0: n = n - 1 print(n) >>> 4 3 2 1 0
예2
0개가된다는것은 그때서야 a가 False가 된다는 것이기에 그때 끝난다.
a = ['foo', 'bar', 'baz'] while a: print(a.pop()) >>> baz bar foo
예3
n = 5 while n > 0: n -=1 if n == 2: break print(n) print('Loop Ended.') >>> 4 3 Loop Ended.
예4
위와 같은 코드이지만 break 대신 continue가 쓰였습니다. 저희는 continue를 배웠기때문에 코드를 쉽게 이해 할 수 있습니다. m이 2가되는경우 pass하고 넘어갑니다.
m = 5 while m > 0: m -=1 if m == 2: continue print(m) print('Loop Ended.') print() >>> 4 3 1 0 Loop Ended.
예5
while문은 break문과 많이 쓴다. 종료 조건을 break할때는 중간에 if문이 들어가는 경우가 많다. 쉽기 때문에 자세한 설명은 하지 않겠습니다.
i = 1 while i <= 10: print('i: ', i) if i == 6: break i +=1 >>> i: 1 i: 2 i: 3 i: 4 i: 5 i: 6
예6
n = 10 while n > 0: n-= 1 print(n) if n == 5: break else: print('else out..') >>> 9 8 7 6 5
n = 10 while n >0: n-=1 print(n) else: print('else out') print() >>> 9 8 7 6 5 4 3 2 1 0 else out
예7
이 코드는 리스트 a에서 값 'qux'를 찾는 것입니다. while 루프를 사용하여 리스트를 처음부터 끝까지 반복하면서 'qux'를 찾으면 루프를 종료하고, 찾지 못한 경우 else 블록이 실행되어 'qux' not found in list.를 출력합니다.
여기서 else 블록은 while 루프가 정상적으로 종료된 경우에만 실행됩니다. 즉, break 문을 만나지 않고 루프가 종료된 경우에 실행됩니다. 만약 break 문이 실행되어 루프가 중간에 종료된 경우 else 블록은 실행되지 않습니다. a에 'qux'가 존재하므로 else구문이 실행되지 않습니다.
a = ['foo', 'bar', 'baz', 'qux'] s = 'qux' i=0 while i < len(a): if a[i] == s: break i +=1 else: print(s, 'not found in list.') >>>
예8
리스트 a에서 항목을 하나씩 빼내어 출력하는 루프를 나타냅니다. while True는 무한 루프를 만들고, 루프 내부에서 if not a를 사용하여 리스트가 비어 있으면 break 문을 통해 루프를 종료합니다. 그렇지 않으면 a.pop()을 통해 리스트에서 마지막 항목을 빼내어 출력합니다.
a = ['foo', 'bar', 'baz'] while True: if not a: break print(a.pop()) >>> baz bar foo
다음 시간에는 파이썬의함수 및 입력에 대해 알아보겠습니다.🙂