[Python 기초] 09. while문

김나연·2021년 8월 5일
0

Python

목록 보기
9/18
post-thumbnail

while문

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

while문의 기본 구조

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

while문은 조건문이 참일 때 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번 찍었습니다.
나무 넘어갑니다.

위 예의 조건문은 treeHit < 10이다. treeHit이 10 이하이면 참이므로 참인 동안 while문 안의 문장을 계속 수행한다. treeHit +1로 treeHit을 1씩 증가하다가 treeHit이 10이상이면 조건은 거짓이 되어 반복문을 멈추고 "나무 넘어갑니다."를 출력한다.

while문 만들기

>>> prompt = """
... 1. Add
... 2. Del
... 3. List
... 4. Quit
...
... Enter number: """
>>> number = 0
>>> while number != 4:
...	print(prompt)
...	number = int(input())
...
1. Add
2. Del
3. List
4. Quit

Enter number:

위는 여러 가지 선택지 중 하나를 선택해서 입력받는 예제이다. prompt를 출력하면 선택지를 출력하도록 문자열을 입력한다.

while문에서 number가 4가 아닌 동안 prompt를 출력하고 사용자로부터 번호를 입력받는다. 조건이 참인 동안 사용자가 4를 입력하지 않는다면 계속해서 prompt를 출력한다.

while문 강제로 빠져나가기

while문은 참인 동안 계속해서 while문 안에 내용을 반복적으로 수행한다. 하지만 강제로 while문을 빠져나가고 싶을 때 사용하는 것이 break문이다.

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

money가 300으로 고정되어 있으므로 while money:조건문은 0이 아니므로 항상 참이 된다. 그렇기 때문에 while문은 종료가 되지않고 무한반복을 돌게 된다.

while문의 내용을 한 번 수행할 때마다 coffee = coffee - 1에 의해 coffee의 개수가 1개씩 줄어든다.
if문에서 coffee가 0이 되면 coffee == 0이 참이 되므로 if문이 수행되어 문자열을 출력하고 break문이 호출되어 while문을 빠져나가게 됩니다.

while문의 처음으로 돌아가기

while문 안의 문장을 수행할 때 조건을 검사해서 조건에 맞지 않으면 빠져나가는 것이 아닌 while문의 맨 처음 조건문으로 다시 돌아가게 할 수 있는 것이 continue문이다.

>>> a = 0
>>> while a < 10:
...	a = a + 1
...	if a % 2 == 0: continue
...	print(a)
...
1
3
5
7
9

위는 1부터 10까지 숫자 중에서 홀수만 출력하는 것을 while문을 사용하여 작성한 예이다.

if문에서 a % 2 == 0(a를 2로 나누었을 때 나머지가 0)이 참이 되는 경우는 a가 짝수일 때이다.
다시말해, continue문은 a가 짝수일 때 수행된다. 이 continue문으로 a가 짝수이면 print(a)가 수행되지 않고 while의 조건문으로 돌아가므로 홀수만 출력할 수 있게 된다.

무한 루프

while True:
	수행할 문장1
	수행할 문장2
	...

파이썬의 무한 루프는 while문으로 구현할 수 있다. 조건문이 True이면 항상 조건이 참이므로 while문 안에 문장이 무한하게 수행될 것이다.
이러한 무한 루프를 빠져나갈 수 있는 방법은 ctrl + c를 눌러 빠져나갈 수 있다.

profile
결국 무엇이든 해내는 사람 '김나연'입니다. 😎

0개의 댓글