21. 파이썬 반복문 while 두번째 시간

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 시간에는 파이썬 반복문 while 의 기본 구조와 while 문 만드는 것을 공부해 봤습니다.

이번 시간에는 파이썬 반복문 while 두번째 시간을 가져보겠습니다

while 문 강제로 빠져나가기

이전 시간에 공부했던것 처럼 while 문은 조건문이 참일 동안에 계속해서 while 문안의 내용을 반복적으로 수행합니다.
그런데 while 문을 강제로 빠져나가야 하는 경우도 있을 수 있습니다.
커피 자판기를 생각해 보면 자판기 안에 커피가 충분히 있을 때에는
동전을 넣었을때 커피가 나오는데 커피가 만약 떨어졌다면
자판기가 제대로 동작을 하지 않는것이기에
커피가 얼마나 남았는가를 항상 검사하고
만약 커피가 떨어졌다면 판매를 멈춰야 할것 입니다.
그리고 판매가 중지되었다는걸 사용자에게도 알려주어야 겠습니다.
이런식으로 판매를 강제로 멈추게 하는것이 break 문입니다.

21. 파이썬 반복문 while 두번째 시간
이미지 출처:점프 투 파이썬

위의 커피자판기 이야기를 코드로 표현해 보겠습니다.

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

위 의 코드는 money 가 300 으로 고정 되어 있습니다. 고로 항상 참이므로 무한 루프를 타게 되어있습니다.
while 문이 한번 수행 할때 마다 coffee 변수는 1 씩 줄어들게 됩니다.
coffee 가 0 이 되면 if 조건문에 의해서 커피가 다 떨어졌다고 판매를 중단한다는 메세지를 출력하고
break 문을 만나 while 문을 빠져나가게 됩니다.

실제 자판기의 작동 과정과 비슷하게 만들어본다면 다음과 같을 겁니다
아래 예는 대화형 인터프리터 가 아닌 비주얼스튜디오코드 편집기 창에서 실행을 해보겠습니다

Python
# 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

위의 코드를 실행하면

Python
돈을 넣어 주세요: 

라고 입력을 할 수 있게 나오고
입력 란에 숫자를 입력해 보면 결과를 확인 할 수 있습니다.

Python
돈을 넣어 주세요: 300
커피를 줍니다.
돈을 넣어 주세요: 500
거스름 돈 200 를 반환하고 커피를 줍니다.
돈을 넣어 주세요: 300
커피를 줍니다.
돈을 넣어 주세요: 1000
거스름 돈 700 를 반환하고 커피를 줍니다.
돈을 넣어 주세요:

while 문의 처음으로 돌아가기

while 문을 수행하다가 조건문이 안 맞아서 빠져나가거나 break 문으로 강제로 빠져나가는 경우 외에도
while 문의 처음 조건문으로 다시 돌아가야 하는 경우도 있을것 입니다.
이럴때 사용되는 것이 continue 문 입니다.

1 부터 10 까지의 숫자 중에서 홀수만 출력하기

1 부터 10 까지의 숫자가 있고 이중에서 홀수만 출력을 하려할때 while 문을 사용해서 작성해 보면서 알아보겠습니다.

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

위 의 코드를 살펴보면 a 가 10 보다 작은 동안 a 는 계속 1만큼씩 증가 하게 됩니다.
그리고 if a % 2 == 0 문장에 의해 a 를 2 로 나눈 나머지 값이 0 이 되는 경우에 참이 되며 이 경우가 짝수인 경우이니 continue 문을 통해 처음 조건문인 while a < 10 으로 가게 됩니다.
따라서 a 가 짝수일 경우에는 print(a) 문장이 수행이 안되는 것입니다.

무한 루프(Loop)

무한 루프란 말 그대로 무한하게 계속 반복 된다는 것입니다.
파이썬에서 사용하는 무한 루프의 기본 형태입니다.

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

while 문의 조건문이 True 이면 항상 참이라는 얘기입니다. 따라서 위의 while 문은 무한적으로 반복되게 됩니다.

파이썬 반복문 while 의 무한 루프의 예를 보겠습니다.

Python
>>> while True:
...     print("무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.")
...
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyboardInterrupt

Ctrl + c 를 안 누른다면 계속적으로 무한하게 실행 될 것 입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

Leave a Comment