인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
while문
- 기본 개념
# 기본 구조 while <expr>: <statement(s)> # <expr>은 익스프레션을 의미하며, if문의 조건식과 동일한 역할을 한다. # 즉, if문과 유사한 구조를 가지며, 조건을 만족하면 해당 code를 계속 반복한다. # while문 활용 예시 n = 5 while n > 0: n = n -1 print(n) # 결과 : 4, 3, 2, 1, 0 a = ['foo', 'abs', 'bar'] while a: print(a.pop()) # 결과 : bar, abs, foo # while 조건식에 데이터가 있는 리스트(a)가 있기 때문에 # while a:의 코드는 while True:와 동일한 코드이다. # 즉, 리스트에 데이터가 존재할 때까지 while문은 계속 반복된다. # 리스트에 데이터가 존재하지 않으면, 해당 리스트는 False 값이 되고 # while문은 중단된다. n = 5 while n > 0: n -= 1 if n == 2: break print(n) print('Loop Ended.') # 결과 : 4, 3, Loop Ended.(2를 찾으면 break로 while문 중단) m = 5 while m > 0: m -= 1 if m == 2: continue print(m) print('Loop Ended.') # 결과 : 4, 3, 1, 0, Loop Ended.(continue로 2만 제외하고 모두 출력) # 이처럼 while문에서도 break와 continue를 활용할 수 있다. i = 1 while i <= 10: print('i:', i) if i == 6: break i += 1 # 결과 : 1, 2, 3, 4, 5, 6 n = 10 while n > 0: n -= 1 print(n) else: print('else out.') # 결과 : 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, else out. n = 10 while n > 0: n -= 1 print(n) if n == 5: break else: print('else out.') # 결과 : 9, 8, 7, 6, 5 # while문에 break가 없는 경우에는, while문을 모두 돌린 후 else문을 1번 실행한다. # 만약 while문에 break가 있으면, while문을 돌리다가 # break가 걸리는 시점에서 while문을 빠져나온다.(for-else문도 동일한 매커니즘) a = ['asd', 'abe', 'bar', 'foo'] s = 'foo' i = 0 while i < len(a): if a[i] == s: break i += 1 else: print(s, 'not found in list.') # 결과 : 어떠한 값도 출력X # 결과 값으로 어떠한 값도 출력되지 않고 else문도 실행되지 않은 것은 # while문을 반복하면서 원하는 결과 값(foo)을 찾았기 때문이다. a = ['asd', 'abe', 'bar', 'foo'] s = 'kim' i = 0 while i < len(a): if a[i] == s: break i += 1 else: print(s, 'not found in list.') # 결과 : kim not found in list. # 결과 값으로 kim not found in list.이 출력된 것은 # while문을 반복하면서 원하는 결과 값(kim)을 찾지 못했기 때문에 # 마지막에 else문이 1번 실행되고 해당 결과 값이 출력된 것이다. # 여기서 len(a)은 4를 의미하며 i < len(a)의 코드는 i < 4의 코드와 동일하다.
- 응용 개념
# 무한반복 while True: print('bar') # 위의 코드처럼 while문의 조건식에 True 값을 할당하면, # print('bar')코드가 무한으로 반복되기 때문에 조심해야 한다.(막대한 리소스 낭비) # 활용 예시 a = ['abe', 'bar', 'foo'] while True: if not a: break print(a.pop()) # 결과 : foo, bar, abe # while문 안에 if문이 중첩되어 있는 구조로 if문의 조건식으로 not a가 들어왔다. # if문의 조건식 not a의 의미는 다음과 같다. # 리스트 a에 데이터가 존재하면 a는 True 값, not a는 False 값을 가지므로, # if문의 조건식이 False가 되어 break는 실행되지 않는다. # 그러나 리스트 a의 데이터가 존재하지 않게되면 a는 False 값, not a는 True 값을 # 가지므로 if문의 조건식이 True가 되어 break가 실행되고 while문을 빠져나온다. # 위의 코드는 pop( ) 함수를 사용해서 리스트 a의 데이터를 한 개씩 가져오는 동시에, # 리스트 a에서 해당 데이터를 삭제하는 원리를 활용했다.
'Python' 카테고리의 다른 글
Python - input (0) | 2021.10.15 |
---|---|
Python - functions (0) | 2021.10.15 |
Python - for문 (0) | 2021.10.14 |
Python - if문 (0) | 2021.10.14 |
Python - 기초 자료형(집합) (0) | 2021.10.13 |
댓글