[파이썬 강좌] #9 반복문 사용하기 While편


저번 시간에 반복문 중 For문이라는 것에 대해 배웠습니다.

이번엔 반복문 중 2번째인 While에 대해 알아보겠습니다.

 

영어에서 While은 ~~하는 동안이라는 뜻으로 쓰입니다.
프로그래밍에서도 비슷한 맥락으로 이해하실 수 있습니다.

 

파이썬의 For문이 범위를 지정해주고 그 범위안에서 반복이 돌아갔다면, While문의 경우에는 어떤 조건식이 참일동안만 반복하게 됩니다.

 

이게 가장 핵심적인 내용이고 While문을 사용할때 햇갈리지 않으려면 진한 글씨의 내용을 숙지해주시는게 좋습니다.

아래에서 예제로 While문의 사용법을 알아보겠습니다.

 

 

while(조건식):
    실행코드1
    실행코드2

우선 while의 사용방법을 알아봅시다. 지금까지 for문, if문의 구분방법과 동일하게 :(콜론) 으로 구분을 하고

반복을 돌릴 부분의 실행코드 들을 Tab으로 들여쓰기 해서 구분합니다.

 

While문은 조건식이 참일동안만 아래의 실행코드를 실행합니다. (중요)

i = 0

while(i < 10):
    i += 1
    print(i, end='')

>>> 12345678910


위 소스는 i라는 정수를 선언 후 0으로 초기화 해주고 있습니다. while문이 돌아가는데 조건식은 i < 10 입니다.

즉, i < 10 이라는 조건이 참일동안만 반복을 하게 됩니다.


i의 값이 우선 처음 0으로 설정되었기 때문에

 

i = 0 에서 처음에 반복을 돌리면 0 < 10 이기 때문에 조건식이 참이 되서 while문 밑의 tab으로 구분해놓은 실행식들이 실행되게 됩니다.

 

(만약에 while문 조건식이 거짓이면 애초에 while문 아래의 실행식 자체가 실행되지 않고 무시하고 넘어가게 됩니다.)

그리고 i += 1 을 통해 i에 1을 누적시켜서 더해가고 있습니다.

 

설명을 안드렸던거 같은데 i+= 1은 i = i + 1 과 동일한 표현으로 자신에게 자신의 1을 더한 값을 대입하라는 뜻입니다.

그렇게 해서 첫번째 Loop (i = 0)에서 i += 1 에 의해 i는 1이 되게 되고 print() 로 1이 찍히고

 

다시 i < 10 조건식으로 돌아가서 조건식의 조건이 참인지 검사합니다.

지금 i = 1 이므로 1 < 10 에 의해 참. 다시 i+=1 이 실행 2가 출력..

 

이런 양상이 반복되게 됩니다.

그러다가 i = 9 인 상태에서 while 조건문을 만나면 9 < 10 : 참 

i+=1 에 의해 i가 10이 되고 print() 에 의해 i값 10이 찍힙니다.

 

그리고 다시 조건식으로 돌아가서 조건을 확인하는데 10 < 10은 거짓이므로 while 문의 조건식은 참이 아닌 거짓이므로 while문의 아래 실행식들은 실행되지 않고 끝나서 while문은 종료됩니다.

 

dialog = input('If you want to exit, type exit : ')

while(dialog != 'exit'):
    print("you can't")
    dialog = input('If you want to exit, type exit : ')
print('escape')

입력1 : a
입력2 : b
입력3 : exit
>>> 
If you want to exit, type exit : a
you can't
If you want to exit, type exit : b
you can't
If you want to exit, type exit : exit
escape

이거 저번에 본적이 있는거같죠? #4 리스트편 에서 리스트 관리 프로그램에서 사용한건데요
dialog 라는 변수에 input으로 입력을 받고 while 반복문에 들어가서 
dialog가 exit이 아닐때까지 반복을 하고 dialog == 'exit'이 되면 print('escape')부분으로 while문에서 나가게 됩니다.

 

dialog = input('If you want to exit, type exit : ')

while(True): 
    if dialog == 'exit':
        break
    else:
        dialog = input('If you want to exit, type exit : ')
print('escape')

입력1 : x
입력2 : exit
>>>
If you want to exit, type exit : x
If you want to exit, type exit : exit
escape

while 조건절에 True를 입력하게되면 무한반복을 하게 됩니다.
while 강제 탈출은 역시 for문처럼 while문안에서 break를 쓰면 나가게 됩니다.

 

while(False):
	#no execute!!

추가적으로 while문은 기본적으로 조건식이 참인 동안만 반복을 하므로 (참일때만 실행을 하므로) 조건식이 False (거짓) 이면 실행자체가 안됩니다.

sr = '^'
i = 0

while(i < 10): 
    i += 1
    print(sr * i)

>>>

^
^^
^^^
^^^^
^^^^^
^^^^^^
^^^^^^^
^^^^^^^^
^^^^^^^^^
^^^^^^^^^^

다음과 같이 For문이 아닌 While문으로 별타워를 찍어볼 수 있습니다.

COMMENT WRITE