티스토리 뷰

목차

    반응형

    만약 ~라면 (if, else, elseif)

    1
    2
    3
    4
    5
    6
    if expression:
        suite...
    [elif expr:
        suite...]
    [else:
        suite...]
    cs


    if는 "만약"을 의미합니다. 문장(소스로 구현한 식)이 참이면, 들여쓰기 된 블록을 실행합니다. 다음 예제에서는 num 값이 10보다 크면 BIG를 3번 표시합니다.


    1
    2
    3
    4
    if num > 10:
        print "BIG"
        print "BIG"
        print "BIG"
    cs


    else는 "그렇지 않으면"을 의미합니다.

    다음 예제에서는 num이 10보다 크면 BIG, 그렇지 않으면 SMALL을 출력합니다.


    1
    2
    3
    4
    if num > 10:
        print "BIG"
    else:
        print "SMALL"
    cs


    elif는 '그렇지 않다면 만약'이란 뜻입니다. 다음 예제에서는 num이 10보다 크면 BIG 출력, 10과 똑같으면 NORMAL 출력, 아니면 SMALL을 표시합니다.


    1
    2
    3
    4
    5
    6
    if num > 10:
        print "BIG"
    elif num == 10:
        print "NORMAL"
    else:
        print "SMALL"
    cs


    if문에서는 False, 숫자 0과 0.0, 공백(""), 빈 리스트([]), 빈 튜플((), 빈 딕셔너리({}) 등을 거짓으로 보고(FALSE로 판단) 그 이외를 참(TRUE 판단)으로 간주합니다.



    ~동안 (while, else)

    1
    2
    3
    4
    while expression:
        suite...
    [else:
        suite...]
    cs


    while은 "~하는 동안(사이)"을 의미합니다. 다음 예제에서는 i의 값이 10보다 작다면 i 값을 표시합니다.


    1
    2
    3
    4
    5
    = 0
     
    while n < 10:
        print n
        n += 1
    cs


    else가 있다면 루프가 끝날 때 else가 실행됩니다.


    1
    2
    3
    4
    5
    6
    = 0
    while n < 10:
        print n
        n += 1
    else:
        print 'END'
    cs

    ~동안 (for, in)

    1
    2
    3
    4
    for var in expression:
        suite...
    [else:
        suite...]
    cs


    for는 List, 튜플의 각 요소, 딕셔너리 키, 문자열의 각 문자, 파일의 각 행 등에 대해서 처리를 반복합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for n in [123]:
        print n                  #=> 1, 2, 3
    for n in (123):
        print n                  #=> 1, 2, 3
    for k in {'one'1'two'2'three'3}:
        print k                  #=> one, two, three
    for c in "123":
        print c                  #=> 1, 2, 3
    for line in open("sample.txt"):
        print line               # 1행 표시
    cs


    예를 들어, 처리를 10회 반복하고 싶다면 range()를 사용합니다.


    1
    2
    for n in range(10):
        print n
    cs


    문자열을 반복할 경우 각각의 문자가 출력됩니다.


    1
    2
    for c in u'베리굿조현':
        print c    # 베, 리, 굿, 조, 현
    cs


    else가 있다면 루프가 끝날 때 실행합니다.


    1
    2
    3
    4
    for n in [123]:
        print n
    else:
        print 'END'
    cs



    루프에서 빠져나올 때 (break 탈출)

    break를 사용하면 while, for 등의 루프 처리 중 빠져 나옵니다(탈출). 다음 예제에서는 n이 5일 때 for 루프를 벗어납니다.


    1
    2
    3
    4
    for n in range(10):
        if n == 5:
            break
        print n      # 0, 1, 2, 3, 4
    cs


    루프를 반복한다 (continue)

    continue를 사용하면 while, for 등의 루프 처리를 반복합니다. 다음 예제에서는 n이 5일 때 for 루프의 처음으로 돌아갑니다.


    1
    2
    3
    4
    for n in range(10):
        if n == 5:
            continue
        print n      # 0, 1, 2, 3, 4, 6, 7, 8, 9
    cs

    예외처리 (try,except, else, finally, raise)

    1
    2
    3
    4
    5
    6
    7
    8
    try:
        suite...
    [except [expression]:
        suite...]
    [else:
        suite...]
    [finally:
        suite...]
    cs


    try, except, else, finally는 예외를 처리합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    str = 'ABC'
     try :
        c = str [5]         # 5번째 문자가 없으므로 IndexError 예외가 발생
    except IOError :
        print 'IOError'     # IOError 예외의 경우이 블록이 실행
    except IndexError :
        print 'IndexError'  # IndexError 예외의 경우이 블록이 실행
    except :
        print 'Unknown'     # 기타 예외의 경우이 블록이 실행
    else :
        print 'Other'       # 예외가 발생하지 않은 경우이 블록이 실행
    finally :
        print 'Finally'     # 항상 이 블록이 실행
    cs


    raise는 예외를 발생시킵니다. 아래 예제는 최근에 발생한 예외를 다시 발생시킵니다. 예외가 발생하지 않은 경우 TypeError 예외를 발생시킵니다.


    1
    2
    3
    4
    try:
        ...
    except:
        raise
    cs



    아래 예제는 SystemError 클래스의 instance를 생성하고 바로 예외를 발생시킵니다.


    1
    2
    3
    4
    5
    try:
        raise SystemError('Error message')
    except SystemError as e:
        print "SystemError"
        print e
    cs


    아래 예제는 "Error message"를 인수에 SystemError의 생성자로 호출해 인스턴스 인수 예외를 발생시킵니다.


    1
    2
    3
    4
    5
    try:
        raise SystemError, 'Error message'
    except SystemError as e:
        print "SystemError"
        print e
    cs


    아래 예제에서는 생성자에 예외 인수를 주어 생성한 인스턴스 예외를 발생시킵니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyException(Exception):
        def __init__(self, file, lineno):
            self.file = file
            self.lineno = lineno
     
    try:
        raise MyException("test.txt"1163)
    except MyException as e:
        print "MyException"
        print e.file
        print e.lineno
    cs





    파이썬 입문 강좌 11강


    관련 글

    클래스 사용법 - 4단계로 마스터

    구문 - 문법, 주석, 들여쓰기, 인코딩 규칙

    자료형 문자열 각종 수식 정리

    변수, 상수, 문서문자열(python docstring)

    리스트 튜플 딕셔너리 (List, Tuple, dict)

    연산자 - 산술 비트 대입 비교 논리 조건

    반응형