Login

Search

Learn 🇰🇷
2022.08.23 19:09

2.1 while을 사용하는 반복문

Views 57 Votes 0 Comment 0

지금부터 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의 값이 얼마가 되었을까요? 이제 이해가 가시겠죠?

 


(num = num + 1 대신 num += 1로 써도 똑같은 일을 한답니다.)

 

 

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


List of Articles
No. Subject Author Date Views
Notice Learn What is Python? admin 2024.10.19 81
22 Learn 🇰🇷 8.1 예외처리(try, except) admin 2022.10.27 41
21 Learn 🇰🇷 7.1. 클래스(class)와 인스턴스 admin 2022.10.27 69
20 Learn 🇰🇷 6.1 텍스트 파일 admin 2022.10.21 58
19 Learn 🇰🇷 5.3 여러 가지 모듈 admin 2022.10.15 56
18 Learn 🇰🇷 5.2 모듈 가져오기(import) admin 2022.10.07 55
17 Learn 🇰🇷 5.1 모듈이란 admin 2022.10.03 58
16 Learn 🇰🇷 4.5 세트(set) admin 2022.10.02 58
15 Learn 🇰🇷 4.4 딕셔너리(dict) admin 2022.09.30 61
14 Learn 🇰🇷 4.3 튜플(tuple) admin 2022.09.21 61
13 Learn 🇰🇷 4.2 문자열과 리스트 admin 2022.09.16 58
12 Learn 🇰🇷 4.1 자료형 admin 2022.09.16 60
11 Learn 🇰🇷 3.4 람다(lambda) admin 2022.09.16 60
10 Learn 🇰🇷 3.3 지역변수, 전역변수 admin 2022.09.15 63
9 Learn 🇰🇷 3.2 반환(return)문 admin 2022.09.10 61
8 Learn 🇰🇷 3.1 함수 admin 2022.09.01 71
7 Learn 🇰🇷 2.3 for를 사용하는 반복문 admin 2022.08.24 55
6 Learn 🇰🇷 2.2 조건문 (if-elif-else) admin 2022.08.23 63
» Learn 🇰🇷 2.1 while을 사용하는 반복문 admin 2022.08.23 57
4 Learn 🇰🇷 1.4 인터프리터와 컴파일러 admin 2022.08.19 71
3 Learn 🇰🇷 1.3 리스트 admin 2022.08.13 63
Board Pagination Prev 1 2 Next
/ 2