본문 바로가기
[파이썬]/제어문

[파이썬][제어문] while 문

by sung min_Kim 2023. 11. 6.
While 문

조건문의 한 종류로, 조건이 참인 경우 반복적으로 코드 블록을 실행하는 제어문


while 문의 기본 형태

 

 while 문도 다른 제어문과 동일한 형태를 가지고 있다. if 문은 조건이 참인 경우 코드 블록을 실행하고 종료되는 반면 while 문은 조건이 참인 동안 코드 블록을 실행하며 이 과정을 조건이 거짓이 될 때까지 무수히 반복하는 특징이 있다.

while 조건:
	조건이 참인 동안 실행할 코드

 

while 문의 동작 원리

 

 while 문은 조건을 평가하고 조건이 참인 경우 코드 블록을 실행하고 난 이후 다시 조건을 해석하는 제어문이다.

 이 과정을 조건이 거짓이 될 때까지 반복적한다. 만약 처음부터 조건이 거짓일 경우 코드 블록은 한 번도 실행되지 않는다.

num = 0

while num < 5:
  print(num) # 조건이 거짓이 될 때까지 반복 동작 수행
             ## 무한 루프 동작

 

 조건이 참인 경우 코드 블록을 무한히 수행하기 때문에 조건을 변화시키는 탈출문이 코드 블록 내에 반드시 존재하여야 한다. 

 탈출문은 탈출 조건을 사용하거나, break 문, pass 문을 사용하여 작성할 수 있다.

 

  • 탈출 조건 사용
- 탈출 조건은 while 문 자체의 조건을 변화시켜 반복문을 종료시키는 방법이다.
num += 1 이라는 탈출 조건을 설정하여, num이 5를 초과할 때 거짓을 반환하게 하여 무한 루프를 종료시키는 동작을 수행한다.
num = 0

while num < 5:
	num += 1
    print(num) # 1 - 5 반환​

 

  • break 문 사용
- break 문은 조건이 참일 경우, 그 즉시 반복문을 종료시킨다.
if 문 안의 조건 i 에 1이 들어온 경우 해당 조건은 거짓을 반환하며, print를 실행한다. i에 2가 들어온 경우 조건은 참을 반환하며 코드 블록 내의 break 문을 실행하고, 그 즉시 반복문은 중단된다.
for i in range(1 ,11):
    if i % 2 == 0:
        break # 조건이 참일 경우, 그 즉시 반복문 중단
              ## 코드 블록 외의 코드 동작
    
    print(i) # 1 반환

 

  • pass 문 사용
- pass 문은 '아무 것도 하지 않음'을 의미하는 문장이다. 주로 코드 틀만 잡고 기능은 나중에 구현하려는 용도로 사용한다. 따라서 pass는 조건이 거짓일 때 오류를 발생시키는 게 아니라, 아무런 행동도 하지 않는다.
for i in range(1 ,11):
    if i % 2 == 0:
        pass
    print(i) # 1 - 10 까지 출력
             ## pass 문은 아무런 행동도 하지 않음

 


 while 문에 대해 몇 가지 예를 들어보자.

 

· 1부터 10까지 숫자 출력하기
num = 0

while num < 10:
    num += 1   ## 탈출문
    print(num) # 1 - 10 출력

 

· 리스트의 모든 요소 출력하기
li = ['banana', 'apple', 'melon']

while len(li):
  print(li) # ['banana', 'apple', 'melon'] 출력
  break     ## 탈출문
· 리스트의 개별 요소 출력하기
li = ['banana', 'apple', 'melon']
count = 0
while count < len(li):
  print(li[count]) # banana  apple  melon 출력
  count += 1
· 리스트의 특정 요소 출력하기
li = ['banana', 'apple', 'melon']

while True:
  print(li[0]) # banana 출력
  break

 

· 딕셔너리의 모든 요소 출력하기
dic = {'name' : 'kim', 'age' : 30}
dic_list = list(dic)
while len(dic_list):
  print(dic) # {'name': 'kim', 'age': 30} 출력
  break
· 딕셔너리의 개별 요소 출력하기
dic = {'name' : 'kim', 'age' : 20}
dic_list = list(dic.items())
count = 0
while count < len(dic_list):
    print(dic_list[count]) # ('name', 'kim')  ('age', 20) 출력
    count += 1
· 딕셔너리의 특정 요소 출력하기
dic = {'name' : 'kim', 'age' : 30}
dic_list = list(dic)
while len(dic_list):
  print(dic) # {'name': 'kim', 'age': 30} 출력
  break

 


· 리스트와 딕셔너리를 형 변환할 때의 주의할 점

- 딕셔너리를 리스트로 형 변환 할 경우, 키 값만 리스트로 옮겨지는데, 값만 옮기고 싶다면 values() 함수를 사용하면 되고, 키와 값 모두를 옮기고 싶다면 items() 함수를 사용하면 된다.
dic = {'name' : 'kim', 'age' : 30}
dic_list = list(dic)           # ['name', 'age'] 반환
dic_list = list(dic.values())  # ['kim', 30] 반환
dic_list = list(dic.items())   # [('name', 'kim'), ('age', 30)] 반환

 

- 반대로 리스트를 딕셔너리로 형 변환하는 경우, 딕셔너리는 키와 값 2개의 인자를 가지므로 리스트의 각 요소는 2개의 값을 가진 튜플이거나 리스트여야 한다. 그렇지 않으면 ValueError 오류가 발생한다.
list = [['name', 'kim', 'bob'], ['age', 10, 20]]
dict(list) # ValueError 오류 반환
list = [['name', 'kim'], ['age', 10]]
dict(list) # {'name': 'kim', 'age': 10} 반환

 


 

While 문에 대해 요약하자면 아래와 같다.

 

조건이 거짓이 될 때까지 무한히 반복하여 동작하는 특징을 가진다.

 

따라서 무한 루프에 빠지지 않으려면 코드 블록 내에 반드시 탈출문을 작성하여 동작을 멈추어야 한다.

 

탈출문은 조건 탈출, break 문, pass 문을 사용할 수 있다. 

 

들여 쓰기 또한 문법이기 때문에 오류가 나지 않도록 칸을 잘 맞추어 주도록 하자.

 

다음은 for 문에 대해 알아보도록 하자.

'[파이썬] > 제어문' 카테고리의 다른 글

[파이썬][제어문] for문  (0) 2023.11.06
[파이썬][제어문] if문  (0) 2023.11.06