목차
- while문 기본 구조
- while문 직접 만들어보기
- while문 강제로 빠져나가기
- 조건에 맞지 않는 경우 맨 처음으로 돌아가기
while문
1. while문 기본구조
반복문이라고도 불리는 while문은 문장을 반복해서 수행할 때 사용한다.
while문은 조건문이 참인 동안 while문 아래에 속하는 문장을 반복해서 수행하라는 뜻이며 기본구조는 아래의 그림과 같다.
이 기본구조도를 참고해서 "열 번 찍어 안 넘어가는 나무 없다."는 속담을 파이썬에서 만들면 아래의 소스코드와 같다.
>>> treeHit = 0 <---- 나무를 찍은 횟수
>>> while treeHit < 10: <---- 나무를 찍은 횟수가 10보다 작을 때 까지 반복
... treeHit = treeHit + 1 <---- 나무를 찍은 횟수 1씩 증가
... print("I hit the tree {0}times." .format(treeHit))
... if treeHit == 10: <---- 나무를 10번 찍으면
... print("The tree is falling over.")
...
I hit the tree 1times.
I hit the tree 2times.
I hit the tree 3times.
I hit the tree 4times.
I hit the tree 5times.
I hit the tree 6times.
I hit the tree 7times.
I hit the tree 8times.
I hit the tree 9times.
I hit the tree 10times.
The tree is falling over.
위에서 사용한 while문의 조건문은 treeHit < 10이다. treeHit이 10보다 작을 때까지 while문 안의 문장을 계속 수행하라는 뜻이다. treeHit = treeHit + 1을 통해 treeHit의 값이 1씩 증가하며 나무를 찍은 횟수를 출력한다. 그리고 if문을 사용해 treeHit이 10 되면 나무가 넘어갔다는 문장을 출력한다. 그 후 treeHit < 10이라는 조건문이 거짓이 되는 순간 while문을 빠져나간다. 이 부분을 정리한 표는 아래와 같다.
treeHit | 조건문 | 조건 판단 | 수행하는 문장 | while문 |
0 | 0 < 10 | 참 | I hit the tree 1times. | 반복 |
1 | 1 < 10 | 참 | I hit the tree 2times. | 반복 |
2 | 2 < 10 | 참 | I hit the tree 3times. | 반복 |
3 | 3 < 10 | 참 | I hit the tree 4times. | 반복 |
4 | 4 < 10 | 참 | I hit the tree 5times. | 반복 |
5 | 5 < 10 | 참 | I hit the tree 6times. | 반복 |
6 | 6 < 10 | 참 | I hit the tree 7times. | 반복 |
7 | 7 < 10 | 참 | I hit the tree 8times. | 반복 |
8 | 8 < 10 | 참 | I hit the tree 9times. | 반복 |
9 | 9 < 10 | 참 |
I hit the tree 10times. The tree is falling over. |
반복 |
10 | 10 < 10 | 거짓 | 종료 |
이렇게 긴 과정을 위의 소스코드 다섯 줄로 만들었다.
2. while문 직접 만들어보기
# 여러 가지 선택지 중 하나를 선택할 수 있는 선택지 만들기
>>> prompt = """
... 1. Add
... 2. Del
... 3. List
... 4. Quit
...
... Enter number: """
# 변수 number에 0을 먼저 대입 후 while문 사용
>>> number = 0 <---- 번호를 입력받을 변수 설정
>>> while number != 4: <---- 입력받은 번호가 4가 될 때 까지 반복
... print(prompt)
... number = int(input())
...
1. Add
2. Del
3. List
4. Quit
Enter number:
1 <---- 4가 아닌 번호를 입력했기 때문에 계속해서 prompt 출력
1. Add
2. Del
3. List
4. Quit
Enter number:
4 <---- 4을 입력했기 때문에 while문 빠져나가기
>>>
3. whlie문 강제로 빠져나가기
while문은 조건문이 참인 동안 계속 내용을 반복적으로 수행한다. 예를 들어 커피 자판기에서 커피를 판매하는 중 커피가 떨어지면 '판매 중지'라는 문구가 나오면서 커피를 뽑을 수 없다. 이렇게 강제로 판매를 멈추게 하는 것이 break문이다. 이 break문을 파이썬 프로그램에 적용시켜 보자. (지금부터는 소스코드의 길이가 길어지기 때문에 대화형 인터프리터가 아닌 에디터를 사용한다.)
coffee = 10 <---- 자판기에 커피가 10개 있다.
while True:
money = int(input("Please put the money: ")) <---- 사용자로부터 입력을 받는 부분 (추후 설명)
if money == 300:
print("I'll give you some coffee.")
coffee = coffee - 1 <---- while문 한 번 진행할 때 마다 커피의 갯수가 하나씩 줄어든다.
elif money > 300:
print("I'll give you some coffee. and The change is {0} won." .format(money - 300))
coffee = coffee - 1 <---- while문 한 번 진행할 때 마다 커피의 갯수가 하나씩 줄어든다.
else:
print("You need more money.")
print("There are {0} coffees left." .format(coffee))
if not coffee:
print("There is no more coffee. Sold Out!") <---- 남은 커피가 없기 때문에 판매가 중지된다.
break <---- while문 강제로 빠져나가기
4. 조건에 맞지 않는 경우 맨 처음으로 돌아가기
앞서 공부했던 break문을 통한 강제로 빠져나가기가 아니라 조건에 맞지 않으면 while문의 맨 처음 조건문으로 돌아가게 만들고 싶을 때 continue문을 사용할 수 있다.
1부터 10까지의 숫자 중 홀수만 출력하는 것을 while문과 continue문을 사용해서 작성해보자.
a = 0
while a < 10:
a = a + 1
if a % 2 == 0: continue <---- a를 2로 나누기해서 나머지가 0이면 맨 처음으로
print(a)
1
3
5
7
9
a를 2로 나눠서 0이 되면 짝수라는 뜻이기 때문에 맨 처음으로 돌아갈 수 있도록 continue문을 넣어준다.
내용 출처: 책 '점프 투 파이썬'의 내용
'Programing > Python' 카테고리의 다른 글
[Python 입문] 10. 파이썬 함수 (0) | 2020.03.22 |
---|---|
[Python 입문] 9. 파이썬 제어문 - for (0) | 2020.03.19 |
[Python 입문] 7. 파이썬 제어문 - if (0) | 2020.03.17 |
[Python 입문] 6. 파이썬 자료형 - 참과 거짓, 변수 (0) | 2020.03.16 |
[Python 입문] 5. 파이썬 자료형 - 튜플, 딕셔너리, 집합 (0) | 2020.03.15 |