지금부터 1에서 10까지의 숫자를 마음속으로 센다고 가정합시다. 이 상황을 파이썬으로 만들려면 어떻게 하는 것이 좋을까요? 지금까지 배웠던 것만 가지고 해볼까요?
>>> print(1) 1 >>> print(2) 2 >>> print(3) 3
좀 귀찮기는 해도 쓸만하지요? 그런데, 이번에는 1부터 100까지 세보려고 합니다. 아, 막막합니다. 100까지 쓰면 아침이 밝아오겠군요.
이럴 땐 다른 방법을 찾아야겠지요? 오늘 그 비밀을 알려 드리려고 합니다.
바로 while이라는 것입니다.
while 문
1, 2, 3, ... , 98, 99, 100
1부터 100까지는 저런 모양이 될 텐데요, 가만 보면 다음에 나오는 숫자는 앞의 숫자보다 1이 더 큽니다. 다시 말하면 앞의 숫자에 1을 더하면 다음 숫자가 나온다는 것이지요. 그러니까 계속 앞의 숫자에 1을 더해나가다가 100까지 쓰고 그만두면 되는 겁니다.
다음을 잘 보세요.
>>> print(1) 1 >>> print(2) 2 >>> print(3) 3
우리가 쓸 숫자를 num이라고 했고, 여기에 1을 넣어주었습니다. 이해가 잘 안 되시는 분은 변수 강좌를 다시 한번 보세요.
그다음에 while이라는 것이 나오죠? 여기서는 'num이 100보다 작거나 같은 동안에'라는 뜻으로 쓴 것입니다.
아직 어려우신가요? 일단 다음 문장으로 넘어가보도록 하겠습니다.
print(num) # leave first four spaces blank
num이라는 변수에 들어있는 수를 화면에 뿌려달라는 것입니다. 지금까지의 강좌 내용을 이해하셨다면 이해하실 겁니다. 지금 num에는 1이 들어있으니 당연히 1을 찍어주겠지요. while 블록 내부에 있다는 표시로 공백 네 칸을 써서 들여쓰기 해주세요.
그다음 문장을 봅시다.
변숫값 증가
num = num + 1 # set the indentation same as above
이번엔 진짜로 이상한 것이 나왔습니다. num이 1이라면 1 = 1 + 1이 된다는 말도 안되는 않은 소리군요. 그런데 프로그래밍에서 =
표시는 '같다'는 뜻 말고 다른 뜻을 갖고 있습니다.
제 시계가 백만원이라는 것을 어떻게 표현했지요?
그렇죠, watch = 1000000
입니다. 이것은 watch
라는 변수에 1000000 이라는 값을 넣어주라는 뜻이었습니다. 조금 전에 num = num + 1
이라고 쓴 것은 num
이라는 변수가 가진 값에 1을 더해서 다시 num
에게 넣어주라는 의미입니다.
그래도 이해가 안 되신다면 다른 걸 보여드리도록 하지요.
>>> a = 3 >>> b = a + 2
위의 문장을 보세요. b의 값이 얼마가 되었을까요? 이제 이해가 가시겠죠?
while 문 수행 과정
보시기 편하도록 앞의 while 문 예제를 다시 한번 써볼게요.
>>> num = 1 >>> while num <= 100: ... print(num) ... num = num + 1 ...
while
은 어떤 조건이 만족되는 동안 그 아래에 쓴 문장들을 반복하는 기능을 갖고 있습니다. 여기서는 num
이 100이 될 때까지 print(num)
과 num = num + 1
을 반복하는 것이지요. 제가 반복을 해보겠습니다.
처음엔 num
값이 1이니까 100보다 작습니다. 그렇다면 그다음 문장을 수행해야겠지요?
print(num)
이니까 화면에 1을 찍고 num = num + 1
해서 num
은 2가 됩니다.
그리고는 다시 위의 while
로 돌아가지요.
그러면 num
값이 2이므로 print(num)
이 2를 찍고 num = num + 1
해서 num
은 3이 됩니다.
그다음엔 num
값이 3이므로 print(num)
이 3을 찍고 num = num + 1
해서 num
은 4가 됩니다.
그다음엔 num
값이 4이므로 print(num)
이 4를 찍고 num = num + 1
해서 num
은 5가 됩니다.
헉헉헉…
그다음엔, … 헉헉헉…
그렇게 하다 보면 언젠가는 num
값이 99까지 올라갑니다. 이번에도 100보다는 작으니까 또 99 찍고, num
은 드디어 100 되지요. 이제 또다시 while
문으로 갑니다. while
다음에 뭐라고 써있죠?
num <= 100:
그렇습니다. num
이 100보다 작거나 같을 때 조건을 만족하는 겁니다. 그러면 하던 일을 계속해야겠죠? print(num)
하면 화면에 100을 찍고 num = num + 1
해서 num
에는 101이 들어갑니다. 그다음에 while
을 만나면 이번엔 num
이 100보다 크니까 그다음의 문장을 수행하지 않고 끝이 나고야 맙니다.
우리는 머리를 약간 굴리고 프로그램 네 줄만 치면 1부터 100까지가 아니라 백만, 천만, 억까지도 숫자를 쓸 수 있는 것입니다.
while 문 실습
먼저 파이썬 프로그램을 띄우고, 처음 두 문장을 쳐보세요. while
문 마지막에 콜론(:
)이 꼭 들어가야하니 빼먹지 마시고요.
>>> num = 1 >>> while num <= 100: ...
둘째 줄까지 치면 다음 줄에 점 세 개가 자동으로 나타납니다. while
문은 여러 줄로 구성되기 때문에 다음 줄을 계속 입력하라는 뜻으로 나타나는 것이지요.
그럼 다음 줄을 입력하겠습니다. 점 세 개 뒤에 바로 쓰지 마시고 공백 키 네 번, 또는 Tab 키를 한 번 눌러서 간격을 띄운 다음에 명령을 입력하세요. 파이썬에서는 여러 줄로 이루어진 명령을 입력할 때 둘째 줄부터는 반드시 들여쓰기를 해줘야 하니까요.
... print(num) ... num = num + 1 ...
그렇게 셋째, 넷째 줄까지 치고 ...
이 나오면 Enter를 한 번 더 눌러주세요. 그러면 더 이상 입력할 것이 없다는 것으로 알고 while 문이 끝나게 됩니다. 제대로 따라하셨다면 순식간에 1부터 100까지 화면에 나타날 겁니다.