• 2020. 6. 26.

    by. 윈썸지니

    반응형

    무한루프에 빠지지 않도록 주의하세요.

    이번 포스팅은 파이썬의 제어문 중 반복문에 해당하는 while 문에 대한 내용입니다.

    어떤 명령들을 반복 수행할 경우 for while을 사용하여 반복 시킵니다.

    사용법이 약간 다르니 필요에 따라 for while 을 적절히 사용하면 됩니다.

     

    for 문을 아직 안 보셨다면 먼저 보고 오세요.

    [IT 이야기 공간/프로그램 언어 및 Database] - 파이썬 제어문 - 반목문 for문

     

    파이썬 제어문 - 반목문 for문

    이번 포스팅은 파이썬의 제어문 중 반복문에 해당하는 for 문에 대한 내용입니다. 다음 포스팅에서 다룰 while 문과 비슷합니다. 어떤 명령들을 반복 수행할 경우 for 와 while을 사용하여 반복 시킵�

    jinisbonusbook.tistory.com

    파이썬 while기본 구문은 아래와 같습니다.

    whilefor 보다는 간단한 구조로 조건문이 참일 경우 계속 반복합니다.

    조건문이 거짓이거나 break loop를 빠져 나갈 때 끝납니다.

     

    whilefor 같이 범위가 있는 것이 아니기 때문에 무한루프에 빠지지 않도록 조심해야 합니다.

    만약 코딩을 잘못 했거나 일부러 무한루프를 도는 프로그램이라면 Ctrl + C 로 프로그램을 중지 할 수 있습니다.

    그러므로 조건문이 거짓이 되어 while 반복을 중지 할 수 있도록 프로그램 해야 합니다.

     

    while for 와 같이 else 사용 할 수 있습니다.

    i = 0
    while i < 5:
        print( i )
        i = i + 1   # i를 1 씩 증가 시킵니다. 
                      # i가 5가 될 때까지 수행하고 조건문에서 5일 경우 거짓이 되어 while 문을 빠져 나옵니다.
        print( ‘증가: ’, i )
    else:
        print( "while end" )   # 마지막에 실행합니다.
        
    0
    증가:  1
    1
    증가:  2
    2
    증가:  3
    3
    증가:  4
    4
    증가:  5
    while end
    >>> 

     

    while에 대한 제어로 for 문과 마찬가지로 continue break 가 있습니다.

    동일한 기능을 합니다.

    for에서 예제로 보였던 홀수를 출력하는 것을 while 로 바꾸어 보겠습니다.

     

    [for문 예제]

    for x in range( 1, 20):
        print( x )
        if x%2 == 0 : continue   ## continue를 만나면 아래를 수행하지 않고 다시 for로 올라가 다음 요소값을 수행합니다.
        print( '홀수 :' , x )
        if x == 13: break           ## break 를 만나면 for 구문을 완전히 빠져나옵니다.

     

    [while 문으로 변경 예제]

    x = 1
    while x < 20:
        print( x )
        if x%2 == 0 : 
            x = x + 1        ## 1. 주의
            continue         ## continue를 만나면 아래를 수행하지 않고 다시 for로 올라가 다음 요소값을 수행합니다.
        print( '홀수 :' , x )
        if x == 13: break    ## break 를 만나면 for 구문을 완전히 빠져나옵니다.
        x = x + 1

    1
    홀수 : 1
    2
    3
    홀수 : 3
    4
    5
    홀수 : 5
    6
    7
    홀수 : 7
    8
    9
    홀수 : 9
    10
    11
    홀수 : 11
    12
    13
    홀수 : 13
    >>> 

    위의 “1. 주의 구문은 x를 증가 시켜주는 구문이 없으면 홀수 1 까지만 출력하고 2로 증가한 다음 계속 2로 나눈 나머지가 0 이므로 continue  가 되므로 무한루프에 빠지니 주의하세요.

     

    한번 “1. 주의 구문을 주석 처리하고 실행해 보세요.

    무한루프는 Ctrl + C 하면 중지 됩니다.

     

    [무한루프 만들기]

    프로그램 구조상 24시간 실행되어야 하는 프로그램이 있다면 일부러 무한루프를 만들어야 할 수도 있습니다.

    아래 구조로 만들면 간단합니다.

     

    while True:

       < 실행문>

     

    당연히 while도 이중 중첩으로 사용 할 수 있고, while 안에 for, for 안에 while 을 사용할 수 있습니다.

    for문에서 예제로 들었던 구구단을 while 로 변경해 보았습니다.

    좀더 신경 쓸게 있긴 합니다.

    i = 1                            ## 수행 횟수를 위한 변수 입니다.
    x = 2                           ## x 는 2단 부터 시작이므로 2로 변수 선언합니다.
    while x < 10:                 ## 1번 while
        y = 1                       ##  2단, 3단… 할 때마다 다시 1부터 시작해야 하므로 y를 1로 초기화 합니다.
        while y < 10 :            ## 2번 while
             print( i, x, '*', y, '=', x*y )
             y = y +1
             i = i +1               ## 수행 횟수를 알기 위해 1을 더해 줍니다.
        x = x+1                    ## 1번 while 에 속해야 하므로 들여쓰기 레벨을 잘 맞춥니다.

    1 2 * 1 = 2
    2 2 * 2 = 4
    3 2 * 3 = 6
    4 2 * 4 = 8
    5 2 * 5 = 10
    6 2 * 6 = 12
    7 2 * 7 = 14
    8 2 * 8 = 16
    9 2 * 9 = 18
    10 3 * 1 = 3
    11 3 * 2 = 6
    12 3 * 3 = 9
    … 중간 생략
    59 8 * 5 = 40
    60 8 * 6 = 48
    61 8 * 7 = 56
    62 8 * 8 = 64
    63 8 * 9 = 72
    64 9 * 1 = 9
    65 9 * 2 = 18
    66 9 * 3 = 27
    67 9 * 4 = 36
    68 9 * 5 = 45
    69 9 * 6 = 54
    70 9 * 7 = 63
    71 9 * 8 = 72
    72 9 * 9 = 81

     

    상황에 따라 for while 중 편한 것이 있습니다. 

    맞춰서 사용하면 됩니다.

     

    while 문에 대해서도 알아 보았습니다.

    반응형