제어문



 파이썬에서 들여쓰기를 문법적으로 강제해서 들여쓰기를 의무적으로 하도록 합니다. 들여쓰기를 할때에는 탭과 공백을 섞어서 쓰지 않고, 탭만 이용합니다. 가장 바깥족의 코드는 반드시 1열에 시작해야합니다. 들여쓰기를 올바르게 하지않으면 syntax에러가 발생합니다.

----------------------------------------------------------------------------------------

a=1      # 가능
b=1 # 불가능

----------------------------------------------------------------------------------------


 파이썬에서의 제어문은 if문, for문, while문이 있습니다.

- if문


  if문의 사용 형태는 다음과 같습니다. elif와 else는 생략이 가능합니다. elif는 다른언어에서 else if와 같은 역할로, if가 만족하지않으면 elif 조건식들을 확인하고, if와 elif 전부 만족하지않는다면, else문을 수행합니다.

----------------------------------------------------------------------------------------

if 조건식 1:

statments

(elif 조건식n:) # if문이 만족하지 않을 경우 elif 수행(여러개 가능)

(else:) # if와 elif 모두 만족하지않을 경우 else 수행

----------------------------------------------------------------------------------------

 if문의 사용은 다음과 같습니다.
----------------------------------------------------------------------------------------
a=7
if a<5:
    print "small"
elif 5<a<10:
    print "regular"
else : 
    print "large"

----------------------------------------------------------------------------------------

(실행 결과)

regular

----------------------------------------------------------------------------------------


- for문


  for문은 타겟과 컨테이너 객체를 지정해서 반복을 할 때 사용하는 제어문으로, 아래와 같은 형태로 사용합니다. 컨테이너 객체에서 원소를 꺼내서 타겟에 삽입하는 형태입니다.

----------------------------------------------------------------------------------------

for <타겟> in <컨테이너 객체>:
statements
else:
statements
----------------------------------------------------------------------------------------

 for문의 사용은 다음과 같습니다.
----------------------------------------------------------------------------------------
color=["red",'blue','yellow']
for x in color:
    print len(x),x # 타겟의 글자수와 타겟 출력
----------------------------------------------------------------------------------------
(실행 결과)
3 red
4 blue
6 yellow
----------------------------------------------------------------------------------------

 이번에는 enumerate()라는 내장 함수에 대해 알아보겠습니다. enumerate() 내장 함수는 컨테이너 객체가 지닌 각 요소값 뿐만아니라, 인덱스 값도 함께 반환합니다.
----------------------------------------------------------------------------------------
color=["red",'blue','yellow']
for i, j in enumerate(color): # i=인덱스 저장, j=실제 값 저장
    print i,j
----------------------------------------------------------------------------------------
(실행 결과)
0 red
1 blue
2 yellow
----------------------------------------------------------------------------------------

 for문에서는 break와 continue가 있습니다. break는 현재 수행중인 반복을 중지하는 역할을 수행하고, continue는 continue이후 부분은 수행하지 않고 반복을 수행하도록 합니다. 위에서의 else문은 break 없이 정상적으로 반복이 모두 수행되면 else 블록이 수행됩니다. 사용예는 다음과 같습니다.
----------------------------------------------------------------------------------------
# break
for x in range(10):
    if x>3: # x 가 3보다 커지면 반복 종료
        break
    print x

print 'stop'
----------------------------------------------------------------------------------------
(실행 결과)
0
1
2
3
stop
----------------------------------------------------------------------------------------
# continue
for y in range(10):
    if y<8: # y가 8보다 작을경우 continue 아래 코드는 수행하지 않고 반복문을 수행
        continue
    print y

print "stop"
----------------------------------------------------------------------------------------
(실행 결과)
8
9
stop
----------------------------------------------------------------------------------------

- while문
  
 while문은 for문과 다르게 타겟과 컨테이너 객체를 사용하는게 아니라, 조건이 만족하면 while블록 내의 statements들을 반복수행합니다. 사용 형태는 다음과 같습니다.
----------------------------------------------------------------------------------------
while 조건식:
statements
----------------------------------------------------------------------------------------

 사용은 다음과 같습니다.
----------------------------------------------------------------------------------------
count=1
sum=0
while count<11:
    sum=sum+count # 1부터 10까지 더해주는 식별자 
    count=count+1 
print sum # 1부터 10까지 더한 숫자를 출력
----------------------------------------------------------------------------------------
(실행 결과)
55
----------------------------------------------------------------------------------------

함수

 
 여태 공부하면서 여러가지 내장 함수를 사용해봤습니다. 함수의 장점은 반복적인 코드를 없애줘서 코드를 짧게 만들어줘서 유지보수를 쉽게 할 수 있다는 점입니다. 직접 사용자가 함수를 정의해서 사용할 수도 있습니다. def 키워드를 이용해 함수를 정의할 수 있습니다. 함수는 한개이상의 statment를 가져야하는데, pass 키워드를 사용하면 none객체를 리턴합니다. 함수의 정의와 사용은 아래와 같습니다.
----------------------------------------------------------------------------------------
def add(a,b): # a와 b를 더해주는 add함수 생성
    return a+b
f=add # f가 add를 가리켜서 add함수와 같은 기능을 하게됩니다.
print add(10,5)
print f([1,2,3],[4,5,6]) # 리스트를 더하면 합쳐진 리스트가 반환됩니다.
----------------------------------------------------------------------------------------
(실행 결과)
15
[1, 2, 3, 4, 5, 6]
----------------------------------------------------------------------------------------

 함수를 사용할 때 인자를 적어주면 순서가 뒤바껴도 상관없습니다.
----------------------------------------------------------------------------------------
def minus(a,b): # a와 b를 더해주는 add함수 생성
    return a-b
print minus(b=5,a=10)
----------------------------------------------------------------------------------------
(실행 결과)
5
----------------------------------------------------------------------------------------

 함수는 두개 이상의 값을 동시에 반환 할 수 있습니다. 이 때 반환값은 형은 튜플형입니다.
----------------------------------------------------------------------------------------
def calc(a,b):
    return a+b,a-b,a*b,a/b
print calc(10,5)
----------------------------------------------------------------------------------------
(실행 결과)
(15, 5, 50, 2)
----------------------------------------------------------------------------------------

 마지막으로 재귀적 함수 호출에 대해 알아보겠습니다. 재귀 함수는 함수 몸체에서 자기 자신을 호출하는 함수를 뜻합니다. 반드시 종결 조건과, 종결 조건이 만족할때의 반환값이 있어야합니다. 아래와 같은 형태로 사용합니다.
----------------------------------------------------------------------------------------
def sum(N): # 입력한 수 부터 1까지 더하는 함수
    if(N==1): # 종결 조건
        return 1 # 종결 조건이 만족할 때 반환할 값
    return N+sum(N-1) # 재귀 호출

print sum(10)
----------------------------------------------------------------------------------------

출처 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍




+ Recent posts