파이썬 while문

김대운·2022년 2월 7일
0

파이썬

목록 보기
7/38

while문의 기본구조


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

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

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

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

while문 만들기


이번에는 여러 가지 선택지 중 하나를 선택해서 입력받는 예제를 만들어 보자. 먼저 다음과 같이 여러 줄짜리 문자열을 입력한다.

>>> prompt = """
    1. AD
    2. Del
    3. List
    4. Quit

     Enter nuber : """
>>>
>>> number = 0
>>> while number != 4:
        print(prompt)
        number = int(input())

    ...
    1. AD
    2. Del
    3. List
    4. Quit

     Enter nuber : """

while문을 보면 number가 4가 아닌 동안 prompt를 출력하고 사용자로부터 번호를 입력받는다. 다음 결과 화면처럼 사용자가 값 4를 입력하지 않으면 계속해서 prompt를 출력한다.

※ 여기에서 number = int(input())는 사용자의 숫자 입력을 받아들이는 것이라고만 알아두자. int나 input 함수에 대한 내용은 뒤의 내장 함수 부분에서 자세하게 다룬다.

while문 강제로 빠져나가기

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

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

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

while문의 맨 처음으로 돌아가기

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

위 예는 1부터 10까지의 숫자 중 홀수만 출력하는 예이다. a가 10보다 작은 동안 a는 1만큼씩 계속 증가한다. if a % 2 == 0(a를 2로 나누었을 때 나머지가 0인 경우)이 참이 되는 경우는 a가 짝수일 때이다. 즉 a가 짝수이면 continue 문장을 수행한다. 이 continue문은 while문의 맨 처음(조건문: a<10)으로 돌아가게 하는 명령어이다.

무한 루프


파이썬에서 무한 루프는 while문으로 구현할 수 있다. 다음은 무한 루프의 기본 형태이다.

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

while문의 조건문이 True이므로 항상 참이 된다. 따라서 while문 안에 있는 문장들은 무한하게 수행될 것이다.

다음의 무한 루프 예이다.

>>> while True:
        print("Ctrl+C를 눌러야 while문을 바져나갈 수 있습니다.")
...
Ctrl+C를 눌러야 while문을 바져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 바져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 바져나갈 수 있습니다.
....

위 문장은 영원히 출력된다. 하지만 이 예처럼 아무 의미 없이 무한 루프를 돌리는 경우는 거의 없을 것이다.

출처

0개의 댓글