FOR 회돌이가 회돌이 구조의 유일한 유형은 아닙니다. FOR 회돌이는 수행하고 싶은 반복의 횟수를 미리 알아야 하기 때문에 즉, 미리 계산할 수 있을 경우에 딱 맞습니다. 그래서 무슨 일이 일어날 때까지 특정한 과업을 계속하고 싶지만 그 때가 언제가 될지 모른다면 무슨 일이 일어나는가? 예를 들어, 파일로부터 데이터를 읽어 처리하고 싶습니다. 그러나 얼마나 많은 데이터 항목이 파일에 들어 있는지 미리 알지 못합니다. 파일의 끝에 이를 때까지 그냥 계속해서 데이터를 처리하고 싶습니다. FOR 회돌이에서 가능하지만 어렵습니다.
이 문제를 해결하기 위하여 도다른 유형의 회돌이가 있습니다: WHILE 회돌이가 그것입니다.
파이썬으로 다음과 같이 보입니다:
>>> j = 1
>>> while j <= 12:
... print "%d x 12 = %d" % (j, j*12)
... j = j + 1
무슨 일이 일어나고 있는지 거닐어 봅시다.
먼저 j를 1로 초기화하고, while 회돌이의 제어 변수를 초기화하는 일은 아주 중요한 단계입니다. 이를 빼먹으면 에러가 자주 야기됩니다.
다음으로 while 서술문 자체를 실행합니다. 이는 불리언 표현식으로 평가됩니다.
결과가 True이면 다음에 따라오는 들여쓰기 블록을 실행합니다. 예제에서 j는 12 미만이므로 블록 안에 들어갑니다.
print 서술문을 실행하여 곱셈표의 첫 줄을 출력합니다.
다음 줄은 제어 변수 j를 증가시킵니다. 이 경우 가장 마지막에 들여쓰기된 줄로서, while 블록의 끝을 의미합니다.
다시 while 서술문으로 되돌아가 새로운 j 값을 가지고 4-6 단계를 반복합니다.
이 행위를 j가 13에 도달할 때까지 계속해서 반복합니다.
그 시점에서 while 테스트가 False를 돌려줍니다. 들여쓰기 블록을 건너뛰고 while 서술문과 들여쓰기가 같은 다음 줄로 갑니다.
이 경우 다른 줄이 없으므로 프로그램이 끝납니다.
지금까지 눈에 보이는 그대로 이해되셨으리라 믿습니다. 단 한가지 지적하고 싶다면 - 위의 while (그리고 for) 줄 끝에 쌍점(:)이 보이십니까? 그를 보고 파이썬은 다음에 일단의 코드(블록)이 온다는 것을 압니다. 잠시 후에 보시겠지만, 다른 언어들은 자신만의 방법으로 인터프리터에게 줄을 함께 무리짓도록 알려줍니다. 파이썬은 쌍점과 들여쓰기를 조합해 사용합니다.
Posted by 홍반장