[Python] 파이썬의 반복문 (while 문)

    While 반복문

    다른 언어가 그렇듯 파이썬도 while문을 제공한다. 사용 방법은 while 문 다음에 조건을 넣는 것인데, 이때 해당 조건이 True(참)가 될 경우 loop를 수행한다. While은 for문과 다르게 나갈 수 있는 값이 없으며 직접 그 조건을 입력해야 되기에 for문보다는 잘 사용되지 않는 편이다.

     

     

    While 조건 구문을 이용한 처리

    While 문은 우선 loop를 수행한 후 변화한 변수가 조건에 부합하는지 여부를 계속 체크하는 방식이 있다.

    While 문에 조건을 넣는 방식

    i = 0 # 변수선언
    while i < 5:	#조건
    	print("i는 ", i, "입니다.")
    	i += 1	# 증감연산

     

    위 방식의 매커니즘은 다음과 같다.

    1. 변수값을 선언한다. (여기서는 i)
    2. 현재 변수값을 기준으로 조건을 비교한다
    3. 이때 True가 나오면 loop를 수행한다. (loop는 콜론 다음의 들여쓰기가 된 부분을 실행)
    4. False가 나오면 종료한다.
    5. True가 나올경우 변수값을 변화 시켜야 되는데 변수값이 변화하지 않거나 혹은 잘못되어서 조건이 계속 True가 되는 경우 무한루프가 실행된다.
    6. 일반적으로는 증감 연산자를 통해서 반복문을 수행하거나 어떤 값(ex: DB)을 받아서 값을 변화 시킨 후 루프를 종료한다

     

     

    While loop 내에 조건을 이용한 처리

    두번째는 While문에 True, 1=1와 같은 변화하지 않는 값을 넣어서 무한루프 조건을 수행한 후, loop 내에 조건을 직접 제어한 후 break 문을 넣는 경우다.

     

    True라는 것을 선언하여 무한으로 루프를 돌게 선언하고, break 조건 문을 만들어서 나간다

     

    i = 0	# 변수 선언
    while True:	# 무한루프 조건(무조건 참)
    	if i >= 5:	# 무한루프를 종료시킬 조건문
    		break;
    	print("i는 ", i, "입니다.")	# 루프시 실행문
    	i += 1 # 증감연산자

     

    계속 프로그램이 돌아가거나, 분산처리 등으로 값을 대기시키거나 스레드(Thread)를 제어해야 하는 경우 등, 조건을 while문에 넣기 보다 if문으로 처리하는게 용이한 경우 이와 같은 방식을 사용하는 경우가 많다.

    사실 while문과 for문의 차이점은 for문이 순수한 반복문의 느낌이 있다면 while문은 조건을 추가하여 반복 + 조건을 동시에 갖는 느낌이라 생각하면 된다. 물론 for문이나 while문 그리고 while문의 첫번째 두번째 방식 어느것을 사용하더라도 모두 반복, 제어할 수 있지만 효율성과 가독성의 차이 정도라 생각하면 될 것 같다.

     

    do~while 문

    이 내용은 프로그램을 하는 사람이라면 궁금해할 것이다. 일반적으로 프로그램의 조건문은 for문, while 문, do~while문으로 배우기 때문이다. do~while은 우선 조건을 수행하고, 그 다음 loop를 결정하는 구문이다.

     

    이는 for문으로 하든, while문으로 하든 어떤 것으로도 구현이 가능하다. 예를 들어, while문의 2번째의 방식의 경우 True로 무조건 loop 구문을 수행하기 때문에 다음과 같이 변경을 하면 do~while문을 처리할 수 있을 것이다.

     

    while True:
    	# 처리할 내용
        if 조건:
        	break

    위와 같이 True 값으로 우선 loop 안에 들어간 후 처리를 한다면 do~while문과 동일한 사용이 되기에 do~while을 할 필요성이 떨어진다. 파이썬은 대체제가 있다면 지원을 안해주는 걸로 보인다. (++, --)와 같은 증감연산자가 그러했었고, do~while도 그렇고 다른 방법이 존재한다면 제공은 하지 않으며, 통일성을 강조하는 것으로 보인다.

     

    연관포스팅

    2020/12/19 - [Language/Python] - [Python] 파이썬의 반복문(for문)

    2020/12/19 - [Language/Python] - [Python] 파이썬에서 증감 연산자 사용방법

     

    반응형

    댓글

    Designed by JB FACTORY