지금부터 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까지 화면에 나타날 겁니다.