본문 바로가기

Developing/Python_배우기

Python 05 - 제어문 (while)

파이썬의 제어문 중 하나인 while을 알아보자.

while은 기본적으로 다음과 같은 구조를 갖는다.

while <조건문>:

<수행할 문장1>

<수행할 문장2>

<수행할 문장3>

<수행할 문장4>

 

 

역시 구조만 봐서는 이해가 가질 않는다.

그렇다면 다음 속담을 while문을 표현해 보자.

 

" 10번 찍어 안 넘어가는 나무 없다 "

 

 

 * 위의 소스에서 while의 조건은 hit < 10 이다. 즉 hit 변수가 10보다 작은 동안에는 while문에 의하여 hit+=1 과 pirnt "나무를~~"가 실행된다.

   그리고 나무를 10번 찍었으면 나무가 넘어갑니다 라는 문장을 출력하고, while의 조건인 hit < 10은 거짓 (이제 hit 값은 11이 됨)이 되어

   while문을 빠져나간다.

 

 * 4번째 줄 hit += 1 이러한 구조는 대부분의 프로그래밍 언어에서 취하고 있는 구조로 해석하자면 다음과 같다.

   hit = hit + 1        hit을 2번 쓰기가 귀찮아서 나온 문법이다 (비슷한 구조로는 다음과 같은 것 들이 있다)

 

   hit -= 1    ==>    hit = hit - 1

   hit *= 2    ==>    hit = hit * 2

 

무한루프

 

무한 루프란 말 그대로 루프(반복)가 무한적으로 돌고 있다는 얘기다. 90% 이상의 프로그래밍에서는 이 무한 루프가 사용되는데

그 목적은 대부분의 특정 입력이 들어오길 기다릴 때 사용된다. 가장 이해가 쉽게 해주는 예제는 다음과 같다.

 

 

 

쉽게 말해서 1234를 누르지 않는 이상 해당 프로그램은 계속 루프가 돈다.

5 라인에 사용되는 raw_input 함수는 사용자로부터 어떠한 값을 입력받는 함수로 나중에 배울 함수이다.

7 라인에 사용되는 break 는 특정 조건을 만족했을 시 반복문을 빠져나갈 떄 사용하는 것으로 바로 다음에서 살펴본다.

 

물론 위와 같이 코딩하는 일은 실무에서 전혀 없다. ㅡ,.ㅡ 무의미한 프로그램이기 때문이며 보다 실용적인 예제는 다음과 같다.

 

 

 

9번에서 cho 변수에 값을 할당(여기서는 입력값)하는 이유는 할당 하지 않으면 while 문의 조건문인 cho != 2 부분에서 cho 변수를 설정하지

않을 경우 cho 변수를 인식하지 못하여 에러가 나기 때문이다. 

 

조건문 빠져나가기 ( break )

 

무한루프 1번째 예제(1234 입력)에서 본 break를 배울 차례이다.

프로그래밍 언어들의 제어문들의 이름이 개인적으로 참 좋은데 바로 이해하기 쉽게 네이밍 되어 있기 때문이다. 물론 영어를 할줄 알아야 한다.

break는 일반적으로 '깨다' 라는 뜻으로 해석되는데 조건문을 깨다 라는 뜻으로 이해 하면 된다.

아래의 예제는 지금까지 배운 "if, elif, else, while, not 등"을 포함한다.

 

 

 

 

 

위의 소스는 블로그 주인장이 좋아하는 레드불을 판매하는 판매기가 있다고 가정 한 후 알고리즘을 작성한 것이다.

물론 실제 알고리즘은 보다 복잡하지만, break 문을 배우는데는 충분하다.

소스에서 보듯이 break는 무조건 조건이 와야 된다. 조건이 있어야 탈출하기 때문이다.

 

그렇다면 탈출 말고 무조건 처음으로 가는 함수는 없을까?

물론 있다, 바로 아래에서 배울 continue 다.

 

 

 

조건문 처음으로 가기 ( continue )

 

조건문을 돌리다 보면 특정 조건시 빠져나가게(break) 해야 할 때도 있지만 반대로 처음으로 돌아가게 해야 할 때도 생긴다.

다음과 같은 예제에서 발생된다.

 

"1부터 10까지의 숫자 중 짝수만 출력"

 

 

6 라인에서 볼 수 있는 '%' 연산자는 나머지를 구하는 연산자이다.

바로 7 라인이 이번 예제의 핵심인 부분이다. a를 2로 나눈 나머지가 2가 아니라는 것은 홀수를 뜯하며 홀수일 때는

제어문 바로 위 (a+=1)로 가라는 뜻이다.