7.while문 제어구조 알아보기
오늘은 한석봉 이야기를 해보겠습니다.
큰 뜻을 품고 어머니를 떠나 숫자공부를 하던 석봉은 어머니가 너무 그리워 집을 찾아갔지요.
돌아온 석봉을 본 어머니는 말씀하셨습니다.
“나는 떡을 썰 테니, 너는 글을 쓰거라...... "
불을 끈 어머니는 떡을 썰기 시작합니다.
엄마는 내일 아침에 아들에게 떡국을 끓여주려고 길다란 떡을 써셨던 것 같습니다...
그 동안에 석봉이는 그 동안 연마한 실력을 총동원하여 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이라는 놈이 나옵니다...
아직 알쏭달쏭하시죠? 일단 다음 문장으로 넘어가보도록 하겠습니다.
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까지 화면에 나타날 겁니다.
while 문 이해 잘가셧나요? 오늘도 파이썬 강좌 마치겠습니다! ㅎㅎ