[파이썬 입문] 제어문 - if else while for in break continue

만약 ~라면 (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)

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

댓글(0)

Designed by JB FACTORY