본문 바로가기
PYTHON

파이썬의 제어문(2) - while

by 휘성티비 2024. 8. 23.

while은 영어로 "~하는 동안"이라는 뜻이다. 프로그래밍에서도 이는 비슷하게 연결되는데 "~하는 동안"이라는 뜻은 조건에 부합하는 동안이라는 뜻으로 해석이 가능하다.

 

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

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

 

조건문을 보고 조건이 참이면 아래 문장을 반복한다. 때로는 조건문을 이용해 무한히 반복하는 while문을 작성할 수도 있다.

 

아래와 같이 여러 줄짜리 문자열을 만들어보자.

>>> prompt = """
... 1. Add
... 2. Del
... 3. List
... 4. Quit
...
... Enter number: """
>>>

 

 

이어서 변수에 0을 대입하여 while 문의 조건문이 판단할 수 있도록 한다.

>>> number = 0
>>> while number != 4:
...     print(prompt)
...     number = int(input())
...

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

Enter number:

 

while 문을 통해 4를 입력하지 않으면 계속해 prompt를 출력한다.

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

 

4를 입력하면 조건문이 거짓이 되기에 while 문을 빠져나가게 된다.

Enter number:
4
>>>

 

break, continue

반복문을 사용하다 보면 특정 경우에서 멈추거나 지나치고 싶을 때가 있을 것이다. 

먼저 break 문의 예시이다. 커피를 팔 때 커피가 떨어지면 판매를 하지 않는 내용이다.

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

 

이 코드를 응용해 돈이 고정되어 있지 않고 지불하는 값에 대한 코드도 작성해볼 수 있다.

# coffee.py
coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break

이렇게 작성하면 돈이 부족할 때는 반복문이 돌아가지만, 커피가 떨어지면 반복문이 중단된다.

 

다음으로 continue에 대해 설명하면, continue를 작성한 문장 이후에 있는 문장을 무시하고 다음 반복으로 넘어가는 것이다.

만약 1부터 10까지의 숫자 중 홀수만 출력하라면 a가 짝수일 때 continue를 사용할 수 있다.

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

 

무한 루프

아까 말한 무한 루프(endless loop)이다. 단순히 무한히 반복한다는 뜻이고 while 문으로 구현할 수 있다.

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

 

무한 루프를 빠져 나가기 위해서는 [Ctrl + C]를 누르면 빠져나간다.