• 2020. 6. 25.

    by. 윈썸지니

    반응형

    출처 : pixabay

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

    다음 포스팅에서 다룰 while 문과 비슷합니다.

     

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

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

     

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

    forin 다음에 있는 값들에서 요소 값을 하나씩  꺼내서 변수에 넣어 줍니다. 

    요소 값을 모두 꺼내면 알아서 for 반복을 멈춥니다.

     

    특이한 것은 파이썬은 for 문에 else를 사용 할 수 있는데 for문을 수행 후 마지막에 수행하는 내용을 넣습니다.

    간단한 for 문 예제를 통해 사용법을 알아봅니다.

    ## 리스트에 대한 예제입니다.
    >>> x = [1, 2, 3, 4]
    >>> for num in x:
    print(num)
    1
    2
    3
    4
    >>>

    ## 문자열에 대한 예제입니다.
    >>> x = "abcde"
    >>> for temp in x:
    print(temp)

    a
    b
    c
    d
    e
    ## 튜플에 대한 예제 입니다. 
    >>> x = [ ('a', 1), ('b', 2), ('c', 3), ('d', 4) ]
    >>> for ( temp, temp1) in x :
        print( temp, temp1)

    a 1
    b 2
    c 3
    d 4
    >>> 

    ## 딕셔너리에 대한 예제 입니다. 키 값만 가져 옵니다.
    >>> dic = { 'a':1, 'b':2, 'c':3 }
    >>> for num in dic:
    print(num)
    a
    b
    c
    >>> 

     

    for 문과 자주 같이 사용되는 함수가 있습니다. range()라는 함수입니다.

    예제를 통해 알아봅니다.

    range( 1, 10) 인 경우는  1 <=  i < 10   정수를 반환해 줍니다.

    ## range()는 범위의 
    >>> for i in range( 1, 10):
    print( i )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> 

     

    for문을 수행 중 특정한 경우에 아래 수행문을 수행하지 않고 계속 반복을 원하는 경우는 continue 사용하고, for문을 빠져 나오고 싶을 경우는 break를 사용하여 for 문을 제어합니다.

     

    예로 범위가 20까지의 숫자 중 홀수는 홀수라고 출력하고 13 까지만 수행하는 예제 입니다.

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

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

    위의 예는 홀수 출력 구문을 if 로 만들어도 같은 결과 값을 얻을 것이지만 continue의 예를 보여 주기 위함 입니다.

    그리고 아래 수행문장이 많으면 continue를 사용하는 것이 효율적입니다.

     

    else 사용 예 입니다. for 수행 후 마지막에 수행합니다.

    중간에 break를 만나서 for 문을 빠져 나올 때는 수행하지 않습니다.

    for i in range( 1, 10):
        print( i )
    else:
        print( "END" )

        
    1
    2
    3
    4
    5
    6
    7
    8
    9
    END

    ## break를 만나서 else를 수행하지 않습니다.
    for i in range( 1, 10):
        print( i )
        if i == 5: break
    else:
        print( "END" )

    1
    2
    3
    4
    5
    >>> 

     

    for 문의 응용으로 for 문안에 for 문 사용 가능합니다.

    이중 for 문장입니다.

    보통 거의 대부분의 프로그램 언어를 배울 경우 이중  for 문의 예로 구구단을 많이 예제로 듭니다.

    저도 구구단을 만들어 보겠습니다.  구구단의 예제가 이중 for 문의 동작 원리를 제일 잘 보여 줍니다.

    i = 1                                   ## 수행 횟수를 위한 변수 입니다.
    for x in range( 2, 10) :             ## 1번 
       for y in range( 1, 10) :          ## 2번
           print( i, x, '*', y, '=', x*y )
           i = i +1                        ## 수행 횟수를 알기 위해 1을 더해 줍니다.

    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

    1for문에서 2가 처음 수행 시 2for문이 1 ~ 9까지 수행되고, 다시 1for3이 수행 시 2for문은 다시 1 ~ 9 까지 수행됩니다.

    이렇게 반복되니 1for문이 8, 2for문은 각 9번 수행되니 총 8*972번이 수행됩니다.

     

    for문에 대해 알아보았습니다.

     

    다음 포스팅은 반복문 while에 대한 내용을 다룹니다.

    반응형