본문 바로가기

programming/python

[ python 친해지기 #9 ] 파이썬 제어문 (while 반복문)

[ python 친해지기 #9 ] 파이썬 제어문 (while 반복문)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬의 제어문 중 while 반복문에 대해서 알아보도록 하겠습니다.

 

while 의 뜻인 ~ 동안 이라는 뜻처럼 동작한다고 생각하시면 이해가 쉬울 겁니다.

 

오늘도 차근차근 알아봅시다. 천천히 따라와 주세요.

 

python-logo
파이썬 로고


while 반복문의 구조

 

while 문을 사용하기 위해서는 조건식과 :이 꼭 필요하며

 

반복될 코드들은 들여쓰기로 구분해주어야 합니다.

 

while <조건식>:
    수행할 동작
    수행할 동작
    수행할 동작
    수행할 동작
     ...
     ....
     ......

 

while 문 안에 수행할 동작으로 작성해 둔 코드들이 조건식이 참일 동안 반복됩니다.

 

예제를 보면서 간단한 while 반복문을 작성해 봅시다.

 

# while 반복문을 사용한 구구단 출력
cnt = 1
while cnt < 10:
    print(f"{9} * {cnt} = {9*cnt}")
    cnt += 1

# 출력 결과
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81

 

 

위 코드에서 while 의 조건식은 "변수 cnt의 값이 10보다 작은가?"입니다.

 

조건이 참일 경우 while 문 안에 코드들이 반복해서 실행됩니다.

 

출력 결과를 보면 구구단의 9단을 출력하는 코드임을 알 수 있습니다.


반복을 멈춰라! break

 

반복문을 멈추게 하는 방법은 조건식의 값이 거짓(False)이 되는 것 말고 break를 사용하는 방법이 있습니다.

 

break의 뜻처럼 멈추는 동작을 하는 코드입니다.

 

다음 예시를 보면서 알아봅시다.

 

# break를 사용하는 while 반복문

# 당신은 치킨집 사장님입니다.
# 매출이 500이 넘거나 닭이 다 떨어지면 영업을 종료합니다.

income = 400
chicken = 2

while income < 500:
    print("안녕하세요. 심심한 치킨집입니다. 메뉴를 선택해주세요.")
    print("1. 치킨 주문")
    print("2. 음료수 주문")
    
    order = int(input())
    if order == 1:
    	income += 30
        chicken -= 1
        print("주문하신 치킨입니다.")
    elif order == 2:
    	income += 5
        print("주문하신 음료입니다.")
    else:
        print("메뉴에 없는 주문입니다. 다시 주문해주세요.")
    
    if chicken == 0:
        print("닭이 모두 소진되어 영업종료합니다.")
        break

 

while 의 조건식을 살펴보면 income 이 500보다 작은가? 이기 때문에

 

매출이 500을 넘어가면 while의 반복은 중지됩니다.

 

그리고 가장 아랫줄에 위치한 if 문의 조건을 살펴보면 "chicken이 0 인가?" 의

 

결과가 참일 경우 영업을 종료하기 위해 break 문을 사용합니다.

 

위 코드를 실행하고 1을 두 차례 입력하면 break 문의 동작을 확인할 수 있습니다.

 

break
break문이 작동해 while문의 반복 멈춤


반복 안 시켜줘 돌아가! continue

 

while 문에서 유용하게 사용가능한 continue문에 대해서 알아보겠습니다.

 

하는 동작은 언어적 의미 그대로 while문의 내용을 반복하는 와중에 continue를 만나면

 

아래에 반복해야 할 코드가 있더라도 맨 처음으로 돌아가서 반복을 다시 진행합니다.

 

예시를 보면서 이해해 봅시다.

 

# 더이상 밑으론 못가! continue문의 사용법

# 1~100 안에 포함된 24의 배수를 구해봅시다.

a = 0

while a <= 100:
    a += 1
    if a % 24 != 0 :
        continue
    print(a)

# 출력 결과
24
48
72
96

 

a를 24로 나눈 나머지가 0이 아니라면 continue에 의해 아래에 있는 print문이 동작하지 않고

 

while 문의 처음으로 돌아갑니다. 출력 결과를 보면 총 4번 print 문이 동작했음을 알 수 있습니다.


무한루프

 

while 문의 조건식이 항상 참인 경우 무한하게 반복을 하게 되는데 이런 상황을 "무한루프에 빠지다." 라고 표현합니다.

 

프로그래머가 의도한 무한루프는 괜찮지만 로직적인 문제로 인해 의도치 않게

 

무한루프에 빠져버린 경우에는 계속해서 시스템의 메모리를 잡아먹기 때문에

 

이럴 때 무한루프에서 빠져나오는 방법에 대해서 알아봅시다.

 

# 무한루프에 빠져버림

while True:
	print("무한루프")

# Ctrl+c 를 눌러서 무한루프에서 빠져나올 수 있습니다.
# 출력 결과
무한루프
무한루프
무한루프
무한루프
무한루프
무한루프
무한루프
무한루프Traceback (most recent call last):
  File "d:\symxsym\while.py", line 8, in <module>
    print("무한루프")
KeyboardInterrupt

 

프로세스를 킬 하는 방법도 존재하지만 이 방법은 OS 관련 포스팅에서 다루도록 하겠습니다.


여기까지 파이썬 제어문 while 반복문에 대해서 알아보았습니다.

 

while 문의 구조를 살펴보면 앞 시간에 공부한 if 문의 구조와 비슷한 것을 알 수 있습니다.

 

제어문과 반복문을 다룰 줄 알게 된 여러분들은 이제 원하는 모든 걸 만들 수 있게 되었습니다.

 

내가 만들고 싶은 프로그램을 퍼즐이라고 비유해 보면 여러분들은 퍼즐 조각을 만들고 이어 붙여서

 

퍼즐을 완성시킬 수 있는 능력이 생긴 겁니다.

 

다음시간에 배울 for 반복문의 구조는 약간 다르기 때문에 구조와 다양한 사용법에

 

대해 자세히 알려드리도록 하겠습니다.

새해 복 많이 받으세요.

반응형