티스토리 뷰
목차
만약 ~라면 (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 | n = 0 while n < 10: print n n += 1 | cs |
else가 있다면 루프가 끝날 때 else가 실행됩니다.
1 2 3 4 5 6 | n = 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 [1, 2, 3]: print n #=> 1, 2, 3 for n in (1, 2, 3): 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 [1, 2, 3]: 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강
- 자료형 문자열 각종 수식 정리
- 변수, 상수, 문서문자열(python docstring)
- 리스트 튜플 딕셔너리 (List, Tuple, dict)
- 제어문 - if else while for in break continue
- with assert pass del print exec 사용법
- 예외 처리 방식과 스택 추적 구현 방법
- 구문 - 문법, 주석, 들여쓰기, 인코딩 규칙
- 연산자 - 산술 비트 대입 비교 논리 조건
- def, global, lambda, iterator, yield @ 사용 방법
- 인스턴스, 메소드, 상속 등 예제 총정리
- 모듈 패키지 - 빌트인 파일 이름 사용 예제
관련 글
변수, 상수, 문서문자열(python docstring)