Python 참조/함수

while 문

Snowboarder 2022. 9. 17. 17:01

while문의 기본 구조

반복해서 문장을 수행해야 할 경우 while문을 사용한다. 그래서 while문을 반복문이라고도 부른다.

다음은 while문의 기본 구조이다.

while <조건문>:
    <수행할 문장1>
    <수행할 문장2>
    <수행할 문장3>
    ...

while문은 조건문이 참인 동안에 while문 아래의 문장이 반복해서 수행된다.

"열 번 찍어 안 넘어가는 나무 없다"는 속담을 파이썬 프로그램으로 만든다면 다음과 같이 될 것이다.

>>> treeHit = 0
>>> while treeHit < 10:
...     treeHit = treeHit +1
...     print("나무를 %d번 찍었습니다." % treeHit)
...     if treeHit == 10:
...         print("나무 넘어갑니다.")
...
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.

위 예에서 while문의 조건문은 treeHit < 10이다. 즉 treeHit가 10보다 작은 동안에 while문 안의 문장을 계속 수행한다. whlie문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit 값이 계속 1씩 증가한다. 그리고 나무를 treeHit번만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 "나무 넘어갑니다."라는 문장을 출력한다. 그러고 나면 treeHit < 10 조건문이 거짓이 되므로 while문을 빠져나가게 된다.

※ treeHit = treeHit + 1은 프로그래밍을 할 때 매우 자주 사용하는 기법이다. treeHit 값을 1만큼씩 증가시킬 목적으로 사용하며, treeHit += 1 처럼 사용하기도 한다.

다음은 while문이 반복되는 과정을 순서대로 정리한 표이다. 이렇게 긴 과정을 소스 코드 단 5줄로 만들 수 있다니 놀랍지 않은가?

treeHit조건문조건판단수행하는 문장while문

0 0 < 10 나무를 1번 찍었습니다. 반복
1 1 < 10 나무를 2번 찍었습니다. 반복
2 2 < 10 나무를 3번 찍었습니다. 반복
3 3 < 10 나무를 4번 찍었습니다. 반복
4 4 < 10 나무를 5번 찍었습니다. 반복
5 5 < 10 나무를 6번 찍었습니다. 반복
6 6 < 10 나무를 7번 찍었습니다. 반복
7 7 < 10 나무를 8번 찍었습니다. 반복
8 8 < 10 나무를 9번 찍었습니다. 반복
9 9 < 10 나무를 10번 찍었습니다. 나무 넘어갑니다. 반복
10 10 < 10 거짓   종료

while문 강제로 빠져나가기

while문은 조건문이 참인 동안 계속해서 while문 안의 내용을 반복적으로 수행한다. 하지만 강제로 while문을 빠져나가고 싶을 때가 있다. 예를 들어 커피 자판기를 생각해 보자. 자판기 안에 커피가 충분히 있을 때에는 동전을 넣으면 커피가 나온다. 그런데 자판기가 제대로 작동하려면 커피가 얼마나 남았는지 항상 검사해야 한다. 만약 커피가 떨어졌다면 판매를 중단하고 "판매 중지" 문구를 사용자에게 보여주어야 한다. 이렇게 판매를 강제로 멈추게 하는 것이 바로 break문이다.

다음 예는 커피 자판기 이야기를 파이썬 프로그램으로 표현해 본 것이다.

>>> coffee = 10
>>> money = 300
>>> while money:
...     print("돈을 받았으니 커피를 줍니다.")
...     coffee = coffee -1
...     print("남은 커피의 양은 %d개입니다." % coffee)
...     if coffee == 0:
...         print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
...         break
...

'Python 참조 > 함수' 카테고리의 다른 글

input 함수  (0) 2022.09.20
for 문  (2) 2022.09.20
sort() 와 sorted() 차이  (0) 2022.09.17
[python] 파이썬 람다(lambda) 함수 설명 및 예제  (0) 2022.05.05
[python] 파이썬 find 함수에 대해서  (0) 2022.03.23