본문 바로가기
Python/왕초보를 위한 파이썬

2.1. while

by 가므자 2012. 4. 3.

오늘은 한석봉 이야기를 해보겠습니다.

큰 뜻을 품고 어머니를 떠나 숫자공부를 하던 석봉은 어머니가 너무 그리워 집을 찾아갔지요. 돌아온 석봉을 본 어머니는 말씀하셨습니다.

"나는 떡을 썰 테니, 너는 글을 쓰거라."

불을 끈 어머니는 떡을 썰기 시작합니다. 어머니는 내일 아침에 아들에게 떡국을 끓여주려고 길다란 떡을 써셨던 것 같습니다. 그 동안에 석봉은 그 동안 연마한 실력을 총동원하여 1부터 10까지 숫자를 씁니다.

1, 2, 3, …

이 상황을 파이썬으로 만드려면 어떻게 하는 것이 좋을까요? 지금까지 배웠던 것만 가지고 해볼까요?

>>> print 1
1
>>> print 2
2
>>> print 3
3
>>>

좀 귀찮기는 해도 쓸만하지요? 그런데, 어머니께서 1부터 100까지 써보라고 하십니다. 아, 막막합니다. 어느 세월에 다 씁니까. 100까지 쓰면 아침이 밝아오겠군요.

이럴 땐 다른 방법을 찾아야겠지요? 오늘 그 비밀을 알려드리려고 합니다.

바로 while이라는 녀석입니다.

1,2,3, … , 98, 99, 100

1부터 100까지는 저런 모양이 될텐데요, 가만 보면 다음에 나오는 숫자는 앞의 숫자보다 1이 더 큽니다. 다시 말하면 앞의 숫자에 1을 더하면 다음 숫자가 나온다는 것이지요. 그러니까 계속 앞의 숫자에 1을 더해나가다가 100까지 쓰고 그만두면 되는 겁니다.

다음을 잘 보세요.

>>> num = 1
>>> while num <= 100:
...     print num
...     num = num + 1
...

우리가 쓸 숫자를 num이라고 했구요, 여기에 1을 넣어주었습니다. 이해가 잘 안 되시는 분은 변수 강좌를 다시 한 번 보세요.

그 다음에 while이라는 것이 나오죠? while은 우리말로 ‘…하는 동안에’라는 뜻을 갖고 있죠? 여기서는 ‘num이 100보다 작거나 같은 동안에’라는 뜻으로 쓴 것입니다.

아직 알쏭달쏭하시죠? 일단 다음 문장으로 넘어가보도록 하겠습니다.

print num

것은 num이라는 변수에 들어있는 수를 찍어달라는 것입니다. 지금까지의 강좌 내용을 이해하셨다면 이해하실 겁니다. 지금 num에는 1이 들어있으니 당근 1을 찍어주겠지요.

그 다음 문장을 봅시다.

num = num + 1

이번엔 진짜로 이상한 것이 나왔습니다. num이 1이라면 1 = 1 + 1 이 된다는 얼토당토 않은 소리군요. 그런데 프로그래밍에서 = 표시는 ‘같다’는 뜻 말고 다른 뜻을 갖고 있습니다.

제 시계가 백만원이라는 것을 어떻게 표현했지요?

그렇죠, watch = 1000000 입니다. 이 것은 watch라는 변수에 1000000 이라는 값을 넣어주라는 뜻이었습니다. 조금 전에 num = num + 1이라고 쓴 것은 num이라는 변수가 가진 값에 1을 더해서 다시 num에게 넣어주라는 의미입니다.

그래도 이해가 안 되신다면 다른 걸 보여드리도록 하지요.

>>> a = 3
>>> b = a + 2

위의 문장을 보세요. b의 값이 얼마가 되었을까요? 이제 이해가 가시겠죠?

자, 이야기가 한참 딴 데로 샜습니다. 원래 공부하던 것을 보시려면 화면을 한참 오르락 내리락하셔야 할 테니까 제가 한 번 더 쓰지요, 뭐.

>>> 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 문 마지막에 콜론(:)이 꼭 들어가야하니 빼먹지 마시구요.

>>> num = 1
>>> while num <= 100:
...

둘째 줄까지 치면 다음 줄에 점 세 개가 자동으로 나타납니다. while 문은 여러 줄로 구성되기 때문에 다음 줄을 계속 입력하라는 뜻으로 나타나는 것이지요.

그럼 다음 줄을 입력하겠습니다. 점 세 개 뒤에 바로 쓰지 마시고 <Tab>키를 한 번 눌러서 간격을 띄운 다음에 명령을 입력하세요. 파이썬에서는 여러 줄로 이루어진 명령을 입력할 때 둘째 줄부터는 반드시 들여쓰기를 해줘야하거든요.

...     print num
...     num = num + 1
...

그렇게 셋째, 넷째 줄까지 치고 …이 나오면 <Enter>를 한 번 더 눌러주세요. 그러면 더 이상 입력할 것이 없다는 것으로 알고 while 문이 끝나게 됩니다. 제대로 따라하셨다면 순식간에 1부터 100까지 화면에 나타날 겁니다.

그리하여 석봉은 100까지 숫자를 쓰고 그리운 어머니 품에서 편안히 잠들 수 있게 되었다는 말씀.

출처 : wikidocs 왕초보를 위한 파이썬

'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글

2.3. for  (0) 2012.04.03
2.2. if  (0) 2012.04.03
1.5. 명령해석기(Interpreter)  (0) 2012.04.03
1.4. 목록(Lists)  (0) 2012.04.03
1.3. 변수  (0) 2012.04.03

댓글