3) while문 (1)

반복해서 문장을 수행해야 할 경우 while문을 사용한다.

 

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

 

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

 

  조건문이 참인 동안 while문에 속하는 문장들이 반복해서 수행된다.

 

      “열 번 찍어 안 넘어 가는 나무 없다” 라는 속담을 파이썬에 적용시켜 보면 다음과 같이 될 것이다.

 

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

 

  위의 예에서 while문의 조건문은 treeHit < 10 이다.

즉 treeHit가 10보다 작은 동안에 while 문 안의 문장들을 계속 수행하게 된다.

  whlie문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit값이 계속 1씩 증가한다.

그리고 나무를 treeHit번 만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 “나무 넘어갑니다”라는 문장을 출력하고 treeHit < 10라는 조건문이 거짓이 되어 while문을 빠져 나가게 된다.

  여기서 treeHit = treeHit +1은 프로그래밍을 할 때 매우 자주 쓰이는 기법으로 treeHit의 값을 1만큼씩 증가시킬 목적으로 쓰이는 것이다.

이것은 treeHit += 1처럼 쓰기도 한다.

 

무한루프(Loop)

 

  이번에는 무한루프에 대해서 알아보기로 하자.

무한 루프라 함은 무한히 반복한다는 의미이다. 파이썬에서 무한루프는 while문으로 구현 할 수가 있다.

  우리가 사용하는 프로그램들 중에서 이 무한루프의 개념을 사용하지 않는 프로그램은 하나도 없을 정도로 이 무한루프는 자주 사용된다.

다음은 무한루프의 기본적인 형태이다.

 

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

 

  while의 조건문이 True이므로 조건문은 항상 참이 된다.

while은 조건문이 참인 동안에 while에 속해 있는 문장들을 계속해서 수행하므로 위의 예는 무한하게 while문 내의 문장들을 수행할 것이다.

  다음의 예를 보자.

 

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

 

  위의 문장이 영원히 출력될 것이다. Ctrl-C를 눌러서 빠져 나가도록 하자.

하지만 위처럼 무한루프를 돌리는 경우는 거의 없을 것이다. 보다 실용적인 예를 들어보자.

  다음을 따라해 보도록 하자.

 

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

 

  먼저 위와같이 여러줄짜리 문자열을 만든다.

 

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

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

Enter number:

 

  다음에 number라는 변수에 0 이라는 값을 먼저 대입한다.

이렇게 하는 이유는 다음에 나올 while문의 조건문이 number != 4인데 number라는 변수를 먼저 설정해 놓지 않으면 number라는 변수가 존재하지 않는다는 에러가 나기 때문이다.

  while문을 보면 number가 4가 아닌 동안에 prompt를 출력하게 하고 사용자로부터 입력을 받아 들인다.

위의 예는 사용자가 4라는 값을 입력하지 않으면 무한히 prompt를 출력하게 된다.

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

예제를 연습해 봅시다