본문 바로가기
Python

Python - while문

by DGK 2021. 10. 14.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

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

댓글