문자열 정의 및 기초연산



- 시퀀스 자료형과 기초연산

 시퀀스 자료형에는 앞에서 공부한 문자열, 리스트, 튜플이 있고, 시퀀스 자료형이 아닌 자료형은 사전이 있습니다. 시퀀스 자료형은 공통적인 연산을 수행하는데 아래와 같은 연산이 있습니다. 앞에서 공부한 내용들이므로, 자세한 설명은 적지 않았습니다.

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

1. 인덱싱 
li=[1,2,3,4]
print li[0]
2. 슬라이싱
s='abcd'
print s[0:2]
3. 확장 슬라이싱
s2='abcdefg'
print s2[::] # 전체 출력
print s2[::2] # step이 2이므로, aceg 출력
4. 연결하기
s1='abc'
s2='def'
print s1+s2
5. 반복하기
s1='blue'
print s1*3
6. 멤버십 테스트
t=(1,2,3,4)
pirnt 3 in t
7. 길이정보
- len()함수 이용
s='asdf'
print len(s)
8. for-in문
color=["red","green","blue"]
for x in color:
    print x

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


- 문자열 정의

  문자열의 정의는 단일 따옴표('')와 이중따옴표("")를 이용해서 정의하는데, 3개를 동시에 사용할 때에는 자동으로 개행이 됩니다. 제가 좋아하는 노래의 가사를 단일따옴표와 이중따옴표를 이용해 정의해서 출력 해봤습니다.

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

# -*- coding: utf-8 -*-


s1=""" 이별밖에 할 수 있는게 없는 우리가 참 슬프지만

돌아선 네 맘을 돌리기엔 이미 늦은걸 알아서

"""

s2=''' 이별밖에 겨우 이것 밖에 할 수 없는 내가 너무 밉지만

함께여서 아픈 우리에겐 남은건 어쩔 수 없는 이별밖에'''

print s1

print s2

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

(실행결과)

 이별밖에 할 수 있는게 없는 우리가 참 슬프지만

돌아선 네 맘을 돌리기엔 이미 늦은걸 알아서


 이별밖에 겨우 이것 밖에 할 수 없는 내가 너무 밉지만

함께여서 아픈 우리에겐 남은건 어쩔 수 없는 이별밖에

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


- 이스케이프(Escape)문자


  이스케이프 문자는 특수한 문자를 사용하기 위해 사용하는 문자로 아래와 같은 문자들이 있습니다. 자주 사용하는 문자들만 예시를 들었습니다.

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

# 1. \ '를 출력하기위한 문자

s1='don\'t warry'

print s1

# 2.\t : 탭 문자

s2='abc\tdef\tghi'

print s2

# 3.\n : 개행

s3='waiting for\nyou'

print s3

----------------------------------------------------------------------------------------
(실행 결과)
don't warry # ' 문자가 출력됨
abc def ghi
waiting for
you
----------------------------------------------------------------------------------------

- 문자열 변경


 앞에서 공부할 때 문자열은 변경이 안된다고 공부했습니다. 그럼 문자열은 어떻게 변경할까요? 문자열의 변경은 문자열 자체를 변경하는게 아니라, 새로운 문자열을 생성해 재 할당 하는 방법을 이용합니다. 아래 코드는 ABDEF문자열을 ABCDEF로 변경하기 위한 코드입니다.
----------------------------------------------------------------------------------------
s='ABDEF'
print 'before s : '+s
s=s[0:2]+'C'+s[2:]
print 'after s  : '+s
----------------------------------------------------------------------------------------
before s : ABDEF
after s  : ABCDEF
----------------------------------------------------------------------------------------

- 유니코드


 다른 언어들과 마찬가지로 파이썬에서도 역시 유니코드를 지원합니다. 사용하려는 문자열 앞에 u라는 문자를 붙여주면 타입이 유니코드가 됩니다. 같은 안녕하세요 라는 문자열을 입력했을 때, 유니코드를 사용하면 한글의 길이도 정확히 출력하는 걸 확인할 수 있습니다.
----------------------------------------------------------------------------------------
h1="안녕하세요"
h2=u'안녕하세요'
print type(h1),len(h1)
print type(h2),len(h2)
----------------------------------------------------------------------------------------
(실행 결과)
<type 'str'> 15
<type 'unicode'> 5
----------------------------------------------------------------------------------------

 마지막으로 보통은 u를 붙여서 사용하지만, uincode()라는 내장 함수를 이용해서 사용할 수도 있습니다.
----------------------------------------------------------------------------------------
# unicode('문자열','인코딩 방식)
h=unicode('보고싶다.','utf-8')
----------------------------------------------------------------------------------------
(실행 결과)
보고싶다. <type 'unicode'>
----------------------------------------------------------------------------------------

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



제어문



 파이썬에서 들여쓰기를 문법적으로 강제해서 들여쓰기를 의무적으로 하도록 합니다. 들여쓰기를 할때에는 탭과 공백을 섞어서 쓰지 않고, 탭만 이용합니다. 가장 바깥족의 코드는 반드시 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)
----------------------------------------------------------------------------------------

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




각종 연산자


 파이썬에서 연산자는 산술 연산자, 관계 연산자, 논리 연산자가 있습니다.


- 산술 연산자

 

 산술 연산자는 사칙 연산자(+,-,*,/)와 나머지(%)연산자, 몫(//) 연산자가 있습니다. 우선순위는 괄호가 가장 높고, 단항 연산자(부호 +,-), 지수 연산자(**), 곱·나누기·나머지·몫 연산자, 덧셈·뺄셈(+,-) 연산자 순입니다. 지수 연산자를 제외한 연산자들은 왼쪽에서 오른쪽으로 연산을 수행합니다. 각 연산자의 사용은 다음과 같습니다.

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

a=+5 # 단항 연산자

b=2**3**2 # 지수 연산자

c=3*2+4 # 곱셈 연산자와 덧셈 뺄셈 연산자

d=7%3 # 나머지 연산자

e=7//3 # 몫 연산자


print 'a=+5 :',a

print 'b=2**3**2 :',b

print 'c=3*2+4 : ',c

print 'd=7%3 :',d

print 'e=7//3 :',e

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

(실행 결과)

a=+5 : 5

b=2**3**2 : 512 # 오른쪽부터 연산하기때문에 3의 2승인 9가 먼저 계산되고 2의 9승인 512가 출력됩니다.

c=3*2+4 :  10 # 곱셈연산을 먼저 수행한 후 덧셈을 수행합니다.

d=7%3 : 1 # 7나누기3의 나머지인 1을 출력합니다.

e=7//3 : 2 # 7나누기3의 몫인 2가 출력됩니다.

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

 이번에는 특별한 경우를 살펴보겠습니다. 아래 코드의 내용은 같아보이지만 실제로는 다른 값이 나옵니다. 그이유를 살펴보겠습니다.
----------------------------------------------------------------------------------------
print -7/3   # 1번
print -(7/3) # 2번
----------------------------------------------------------------------------------------

(실행 결과)

-3
-2
----------------------------------------------------------------------------------------
 위에서 괄호가 가장 우선순위가 된다고 했었습니다. 1번의 경우는 -2.3333의 수가 나오는데 나눗셈 연산은 값보다 작은 정수 중에서 가장 큰수를 반환하기때문에 2.3333보다 작은정수인 -3이 출력되고, 2번의 경우는 7/3은 2.3333이되서 값보다 작은 정수중에서 가장 큰수인 2가 반환되서 -2가 출력되게됩니다.

 또한, 정수/정수는 정수 실수/실수는 실수가 출력됩니다. C언어에서 형넓히기 처럼, 정수/실수 또는 실수/정수는 float타입을 가지게됩니다.
----------------------------------------------------------------------------------------
a2=5/2
b2=5/2.0
c2=5.0/2
print "a2 :",a2
print "b2 :",b2
print "c2 :",c2
print type(a2); print type(b2); print type(c2);
----------------------------------------------------------------------------------------

(실행 결과)

a2 : 2   # 5/2의 값은 2.5지만 정수형이므로 2가 출력됩니다.
b2 : 2.5
c2 : 2.5
<type 'int'>
<type 'float'>
<type 'float'>
----------------------------------------------------------------------------------------

 산술연산자는 우선 순위에 따라서 연산이 수행되지만, 코드의 가독성을 위해 괄호를 사용하는게 좋다고합니다.


- 관계 연산자


 관계 연산자는 객체가 지닌 값의 크기를 비교하여, True 혹은 False를 반환합니다. 연산자의 종류는 값이 같은 지 확인하는 ==, 값이 다른지 확인하는 !=, 대소 연산자(>,<,>=,<=)가 있습니다. 사용형태는 다음과 같습니다.

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

a=5

b=10


print 'a==b :',a==b

print 'a!=b :',a!=b

print 'a>b  :',a>b

print 'a<=b :',a<=b

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

(실행 결과)

a==b : False

a!=b : True

a>b  : False

a<=b : True

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

 한 가지 특이한 점은 파이썬 에서는 관계연산자를 동시에 사용할 수 있습니다. 뒤에나오는 논리연산자인 and 연산자를 사용하지 않고, 동시에 사용이 가능합니다.

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

print "0<a and a<b :",0<a and a<b

print "0<a<b :",0<a<b

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

(실행 결과)

0<a and a<b : True
0<a<b : True

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


 상수 자료형 말고 문자나 리스트, 튜플, 사전 같은 자료형의 비교는 어떤 기준으로 할까요? == 연산자는 동일한 값을 가져야 True가 반환되고, 대소관계 에서는 "사전순서"로 연산을 수행합니다. "사전순서"는 흔히 알고있는 사전을 생각하시면 편합니다.

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

s="abcd"

s2="abd"


# 리스트와 튜플은 앞에서부터 값 비교


l=[1,2,3,5]

l2=[1,2,3,6]


t=(1,5,7)

t2=(2,3,5)


d={'f':'F','g':'G'}

d2={'a':'A','d':'D'}


print "s2>s :",s2>s

print "l2>l :",l2>l

print "t2>t :",t2>t

print "d2>d :",d2>d

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

(실행 결과)

s2>s : True # 사전에 abcd보다 abd가 뒤에나오기때문에 s2가 더큼

l2>l : True # 사전에 1,2,3,5보다 1,2,3,6이 뒤에 오기때문에 l2가 더큼

t2>t : True # 1보다 2가 크기때문에 t2가 더 큼

d2>d : False # f보다 a가 앞에나오기때문에 False

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

 자료형이 다른 두 값을 비교할때는 어떨까요? 숫자<사전<리스트<문자열<튜플의 관계를 가집니다. 관계에 따라서 True/False가 결정됩니다.

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

print 'a>b :',a>b
print 'd>c :',d>c

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

(실행 결과)
a>b : False
d>c : True

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

 추가적으로 sort함수에대해서 간단하게 살펴보겠습니다. sort함수는 정렬을 해주는 함수인데, 위의 관계와 사전순서에 따라서 정렬을 해줍니다. 다음과 같이 리스트 l2가 여러 자료형을 인덱스로 가지고있습니다. sort함수를 사용하면 정렬을 해줍니다.

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

l2=['abc',3,(1,2,3),[4,5,6],'zzzz',{1:2}]

print 'before :',l2

l2.sort()

print 'after  :',l2

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

(실행 결과)

before : ['abc', 3, (1, 2, 3), [4, 5, 6], 'zzzz', {1: 2}]

after    : [3, {1: 2}, [4, 5, 6], 'abc', 'zzzz', (1, 2, 3)]

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


- 논리 연산자


 논리 연산자는 부울 연산자라고도 하며, 관계 연산자 처럼 True, False를 피 연산자 값으로 가지며, 논리 연산자 자체가 값을 반환 하지는 않습니다. 논리 연산으로 최종적으로 평가 되어진 값이 반환됩니다. 논리 연산자의 종류는 and, or, not 세가지가 있습니다. and는 둘다 참일경우 True, or는 둘중 하나라도 참일 경우 True, not은 True와 False를 반전시켜 줍니다. 사용 형태는 다음과 같습니다.

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

a=11
b=10
c=15

print a<b and a<c # 
print a<b or a<c
print a<b; print not a<b
----------------------------------------------------------------------------------------
(실행 결과)
False
True
False
True
----------------------------------------------------------------------------------------
 추가적으로, and 연산의 경우 앞의 연산이 거짓이면 뒤의 연산을 수행하지 않으며, or연산은 앞의 연산이 True일경우, 뒤의 연산을 수행하지 않습니다.

 True와 False는 사칙연산자와 만날경우 True는 1 False는 0의 값을 가집니다.
----------------------------------------------------------------------------------------
a=11
b=10
c=15

print (a<c)+5
print (a<b)+3
----------------------------------------------------------------------------------------
(실행 결과)
6
3
----------------------------------------------------------------------------------------

 마지막으로 bool() 내장 함수에 대해 알아보겠습니다. bool()함수는 수치값을 진리값으로 변환해줍니다. 정수 0, 실수0.0, 비어있는 문자열 '',""과 None 객체는 False가 됩니다.
----------------------------------------------------------------------------------------
print bool(0)
print bool(0.0)
print bool('')
print bool(None)
# 리스트, 튜플, 사전 역시 비어있는 자료형은 거짓이 됩니다.
print bool([])
print bool(())
print bool({})
----------------------------------------------------------------------------------------
(실행 결과)
False
False
False
False
False
False
False
----------------------------------------------------------------------------------------

 마지막으로, 논리 연산자를 이용해 연산을 해보겠습니다.
----------------------------------------------------------------------------------------
print [] or 1
print () and 1
print 1 and []
print ([]) or 1 # [[]] : 공리스트를 가지는 리스트는 참

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

(실행 결과)
1 # 앞은 거짓이지만 뒤의 정수가 참이므로 1 출력
() # 앞이 공튜플(거짓)이므로 뒤를 연산하지않고 거짓인 공튜플 출력
[] # 앞의 정수가 참이고, 뒤의 리스트가 공리스트(거짓)이므로, 거짓인 [] 출력
1 # 앞의 리스트가 참이고, 뒤의 1도 참이므로 1출력

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


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




파이썬 내장 자료형


 파이썬에는 세 가지 내장 자료형이 있습니다. 앞에서 공부할 때 몇번 쓰였던 리스트와 튜플, 사전이 있습니다. 세 자료형 모두 집합적인 자료형이라는 공통점이 있습니다. 아래 표는 각 자료형의 특징입니다.


리스트

 마지막 요소부터 접근 가능

튜플 

 읽기만 가능하며, 속도가 빠름 

사전 

 용어 사전과 유사한 방식으로 구성 

 

- 리스트(List)

  

 리스트는 임의의 객체를 순차적으로 저장하는 집합적 자료형 입니다. 순차적인 자료형이기 때문에 인덱스가 존재합니다. 문자열과 같이 인덱싱, 슬라이싱, 문자열 연산(+,*)이 가능합니다. 아래와 같은 형태로 사용합니다.

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

L=[1,2,3]

 

print "len(L) :", len(L)

print "L[1] :", L[1]      # 인덱싱

print "L[-1] :", L[-1]    # 인덱싱

print "L[1:3] : ", L[1:3] # 슬라이싱

print "L+L :", L+L # 문자열 + 연산

print "L*3 :", L*3  # 문자열 * 연산

print "type(L) :", type(L) # 문자열의 타입

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

(실행 결과)

L[1] : 2

L[-1] : 3

L[1:3] : [2, 3]

L+L : [1, 2, 3, 1, 2, 3]

L*3 : [1, 2, 3, 1, 2, 3, 1, 2, 3]

type(L) : <type 'list'>

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

 

 리스트는 문자열과 다르게 리스트는 인덱스의 값을 변경 할 수 있습니다.

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

L=[1,2,3]

 

print "before L :",L

L[2]=7

print "after L  :",L

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

(실행 결과)

before L : [1, 2, 3]

after L  : [1, 2, 7]

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

 

 앞에서 range()함수 살짝 공부했었는데, range()함수를 이용해서도 리스트를 만들 수 있습니다

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

L2=range(10)  # 리스트 L2 생성

 

print "L2 : ",L2

print "L2[::2]  :",L2[::2]

print "L2[::-1] :",L2[::-1]

print "8 in L2  :",8 in L2

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

(실행 결과)

L2 :  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # range(10)에 의해 1부터 9까지 리스트 생성

L2[::2]  : [0, 2, 4, 6, 8]            # step 2때문에 0,2,4,6,8 만 출력

L2[::-1] : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] # step -1때문에 거꾸로 출력

8 in L2  : True                          # 멤버쉽 테스트

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

 

- 튜플(Tuple)

 

 튜플은 리스트와 유사하지만 튜플 내의 값을 변경할 수 없는 자료형입니다. 리스트는 대괄호 '[]'를 사용하는 반면에 튜플은 소괄호 '()'를 사용합니다. 튜플또한 각 값의 인덱스가 부여되며, 대부분의 문자열 연산이 가능하지만, 값은 변경 할 수 없습니다. 아래와 같은 형태로 사용합니다.

 

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

t=(1,2,3,4)

 

print "len(t) :", len(t)

print "t[1] :", t[1]

print "t[-1] :", t[-1]

print "t[1:3] :", t[1:3]

print "t+t :", t+t

print "t*3 :", t*3

print "5 in t :",5 in t

print "type(t) :", type(t)

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

(실행 결과)

t[-1] : 4

t[1:3] : (2, 3)

t+t : (1, 2, 3, 4, 1, 2, 3, 4)

t*3 : (1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)

5 in t : False

type(t) : <type 'tuple'>

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

 

- 사전(Dictionary)

  

 정수형 인덱스가 아닌 키 값을 저장하는 자료형 입니다. 키 값 : 매핑형태로 저장되며, 중괄호 '{}'를 사용합니다. 리스트, 튜플과는 다르게 임의의 순서로 저장됩니다. 실제로는 해시값 순으로 정렬 된다고 합니다. 다음과 같은 형태로 사용합니다.

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

P={'apple':'red','banana':'yellow','grape':'purple'} # 사전 P 선언 및 키와 값 할당

 

print "P['apple'] :",P['apple'] # 사전의 apple 키의 해당하는 값 출력

 

print 'before P : ',P 

P['orange']='orange' # orange라는 키와 값 삽입

print 'after  P : ',P

 

P['grape']='delicious' # 키가 grape인 값 변경

print "P :",P

 

print "'apple' in P :",'apple' in P # 멤버쉽 테스트

 

print '*'*30 # 줄을 구분하기 위해 * 문자 출력

 

print "P.key() :",P.keys() # 사전의 키만 추출해서 리스트로 반환

print "P.values() :",P.values() # 사전의 값만 추출해서 리스트로 반환

print "P.items() :",P.items() # 키와 값을 튜플로 추출

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

(실행 결과)

P['apple'] : red

before P :  {'grape': 'purple', 'apple': 'red', 'banana': 'yellow'}

after  P : {'orange': 'orange', 'grape': 'purple', 'apple': 'red', 'banana': 'yellow'}

P : {'orange': 'orange', 'grape': 'delicious', 'apple': 'red', 'banana': 'yellow'}

'apple' in P : True

******************************

P.key() : ['orange', 'grape', 'apple', 'banana']

P.values() : ['orange', 'delicious', 'red', 'yellow']

P.items() : [('orange', 'orange'), ('grape', 'delicious'), ('apple', 'red'), ('banana', 'yellow')]

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

 items()함수는 튜플로 추출 하지만, 반환형태는 리스트입니다.

 

- 내장 자료형의 특성

 

 내장 자료형의 특성을 표로 정리해 봤습니다. 시퀀스는 인덱스가 존재한다는 뜻이고, 리터럴은 정수나 숫자, 표기법 등이 하나씩 저장된다는 뜻이며, 컨테이너는 집합체 형태라는 뜻입니다.


 추가적으로 타입이 동일한 지 알아볼 때는 '=='를 사용합니다. 그리고, 아무것도 아닌, 아무것도 없는 타입을 None객체라고 합니다.

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

a=[1,2,3]

b=(4,5,6)

print type(a)==type(b)

 

None c

print type(c)

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

(실행 결과)

False

<type 'NoneType'>

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

 

- 객체 신원 식별

 

 객체를 식별하기 위한 고유의 식별자가 있습니다. 이러한 식별자를 알아보는 함수가 id()함수입니다. 수치형 자료는 이미존재하는 1을 가리키는 레퍼런스를 할당하기 때문에 식별자가 동일하며, 리스트 같은 형태의 자료형은 값이 동일해도 식별자가 다릅니다.

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

a=50 # a50을 가리키고

b=a  # b또한 a를 가리켜 50을 가리키기 때문에 식별자가 동일

print id(a); print id(b)

 

a2=3 # 수치형 자료는 동일한 식별자를 가짐

b2=3

print id(a2); print id(b2)


print '*'*50


c=[1,2,3,4]

d=[1,2,3,4]


print "id(c) :",id(c) # 리스트 값은 동일하지만, 식별자는 다름

print "id(d) :",id(d)

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

(실행 결과)

id(a) : 30704440

id(b) : 30704440

id(a2) : 30703576

id(b2) : 30703576

**************************************************

id(c) : 39759304

id(d) : 39759240

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

  

 두 객체가 동일한지 테스트 할 때에는 is 키워드를 사용합니다. 다음과 같은 형태로 사용합니다.

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

a=50 

b=a 


a2=3 

b2=3


c=[1,2,3,4]

d=[1,2,3,4]


print a is b
print a2 is b2
print c is d
----------------------------------------------------------------------------------------
(실행 결과)
a is b :  True
a2 is b2 :  True
c is d :  False

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

 타입이 동일한지 확인할 때 처럼, 두 객체의 값이 같은 지 확인할 때에도 '=='연산자를 사용합니다. 

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

c=[1,2,3,4]

d=[1,2,3,4]


print "c==d : ",c==d # 식별자는 다르지만, 값이 같으므로 True가 반환됨

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

c==d :  True
----------------------------------------------------------------------------------------

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



수치형 자료형


 프로그래밍 공부를 해보신 분들은 수치형 자료형이 뭔지 알고 계실겁니다. 수치형 자료형은 쉽게 말해 수치를 표현 하는 자료형이라고 말할 수 있습니다. 파이썬에서는 정수형, 실수형, 롱형, 복소수형이 있습니다.


 자료형 공부에 앞서, 저처럼 이클립스에서 실습을 할 때 한글 주석을 넣으면 오류가 발생합니다. 아래와 코드를 넣어주면 한글로 주석을 달아도 오류가 발생하지 않습니다.

# -*- coding: utf-8 -*-


- 정수형


 정수형은 쉽게 말해 소수 영역이 없는 수로 타입은 int를 사용합니다. 사용은 아래와 같습니다. 8진수와 16진수에는 정수앞에 각각 0과 0x를 붙여줍니다.

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

# -*- coding: utf-8 -*- #한글 주석을 사용하기 위해 사용

a=11   # 10진수

b=011  # 8진수

c=0x11 # 16진수

print a

print b

print c

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

(출력 결과)

11

9

17

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


 정수형(int)의 최대 크기는 sys모듈의 maxint를 확인하면 알 수 있습니다.

----------------------------------------------------------------------------------------
import sys
print sys.maxint
----------------------------------------------------------------------------------------
(출력 결과)
2147483647
----------------------------------------------------------------------------------------

- 실수형


 실수형은 소수영역이 있는 수로, float타입을 가집니다. 사용은 아래와 같습니다. e3은 10의 3승 e5는 10의 5승을 뜻합니다.

----------------------------------------------------------------------------------------
a=1.2
b=1.3e3
c=-0.5e5
print a; print b; print c
----------------------------------------------------------------------------------------
(출력 결과)
1.2
1300.0 # 1.3*10^3승인 1300.0 이 출력됩니다.
-50000.0
----------------------------------------------------------------------------------------
 위의 결과 처럼 바껴서 출력되는 이유는 print함수의 str(repr) 내장 함수 때문이라고 합니다.


- 롱형

 

 롱형 상수는 큰 자리수의 수를 표현할때 사용합니다. 숫자의 끝에 L문자를 붙여서 사용하는데, 정수형의 최대크기(maxint)를 넘어가면 명시적으로 롱형으로 변환됩니다. 하지만, 굳이 큰 수가 아닌 작은 수여도 L을 붙인다면 타입이 롱형이 됩니다.
----------------------------------------------------------------------------------------
h=12345678901234565L
h2=12345678901234565 # 명시적으로 롱형으로 변환
print h; print h2
print type(h); print type(h2)
----------------------------------------------------------------------------------------
(출력 결과)
# 같은 값인 롱형으로 출력되며, 타입도 롱형으로 동일합니다.
12345678901234565
12345678901234565
<type 'long'>
<type 'long'>
----------------------------------------------------------------------------------------

- 복소수형


 복소수형은 실수부와 허수부의 합으로 구성된 수를 뜻합니다. 자세하게 복소수의 수학적인 내용이 궁금하신 분들은 아래 링크를 참고하시길 바랍니다.
http://terms.naver.com/entry.nhn?docId=1103039&cid=40942&categoryId=32206
 허수에는 j를 붙여 연산하며, 각각 실수부와 허수부끼리 연산합니다.
----------------------------------------------------------------------------------------
a=10+20j
b=30+50j
print a+b
----------------------------------------------------------------------------------------
(출력 결과)
(40+70j)
----------------------------------------------------------------------------------------
 참고로, 복소수형 관련 내장함수로 complex()라는 함수가 있는데, 인자로 값을 넣어주면 아래와 같은 복소수 형태로 반환해줍니다.
complex(1.1,5) -> (1.1+5j)

- math 모듈


 수학적인 값들을 저장하고 있는 모듈입니다. math모듈을 임포트 하면, pi를 비롯해 e, sin, sqrt(제곱근을 구하는 함수)등을 사용 할 수 있습니다.
----------------------------------------------------------------------------------------
import math
print math.pi
print math.e
print math.sin(5)
print math.sqrt(4)
----------------------------------------------------------------------------------------
(출력 결과)
3.14159265359
2.71828182846
-0.958924274663
2.0
----------------------------------------------------------------------------------------

문자열 자료형


 파이썬에서 문자열 자료형은 단일 따옴표(')와 이중 따옴표(") 모두 문자열을 사용할 수 있습니다.
----------------------------------------------------------------------------------------
a='park hye ung'
b="Park Hye Ung"
----------------------------------------------------------------------------------------
(출력 결과)
park hye ung
Park Hye Ung
----------------------------------------------------------------------------------------

 문자열의 자료형은 다른 언어에서 처럼 변경이 되지 않습니다.  문자열의 주요 기능으로 인덱싱 슬라이싱이 있습니다.
 

- 인덱싱(Indexing)


 C언어에서의 배열처럼 파이썬에서도 문자열을 할당하면 다음과 같이 인덱스가 0번부터 시작합니다. 이때 인덱스 -1번은 맨뒤의 문자를 의미합니다. 인덱싱은 이러한 인덱스의 번호를 이용하는 방법입니다.
----------------------------------------------------------------------------------------
a="Hello!!"
print a[0]; print a[-1]
----------------------------------------------------------------------------------------
(출력 결과)
H # 맨 앞 문자 출력
! # 맨 뒤 문자 출력
----------------------------------------------------------------------------------------

- 슬라이싱(Slicing)

 
 슬라이싱은 인덱싱을 이용해서 부분적으로 인덱스를 출력할 수 있는 방법입니다. 형식은 start(inlcluded) : stop(excluded) : step 의 형태입니다. included와 excluded를 써논 이유는 range함수처럼 시작하는 인덱스는 포함하고, 끝나는 인덱스는 포함하지 않기 때문입니다.
----------------------------------------------------------------------------------------
a="Hello!!"
print a[1:3] # 1번인덱스부터 3-1번인덱스까지 출력
print a[4:]  # 4번 인덱스부터 출력
print a[:5]  # 5-1번 인덱스까지 출력
print a[::-1] # -1번(맨뒤)인덱스부터 출력 -> 거꾸로 출력
----------------------------------------------------------------------------------------
(출력 결과)
el
o!!
Hello
!!olleH
----------------------------------------------------------------------------------------

- 문자열의 연산

 
 문자열의 연산은 +와 *가 있습니다. +는 두 문자열을 연결해주고 *는 해당 문자열을 반복해 줍니다. 아래와 같이 사용할 수 있습니다.
----------------------------------------------------------------------------------------
a="Hello!"
b=" "
c="world~"
print a+b+c  # a,b,c 문자열을 모두 합쳐서 출력
print a*3      # a를 3번 반복해서 출력
----------------------------------------------------------------------------------------
(출력 결과)
Hello! world~
Hello!Hello!Hello!
----------------------------------------------------------------------------------------

 문자열의 길이는 len내장 함수를 통해 알 수 있습니다. 공백까지 문자열의 길이에 포함됩니다. 사용 형태는 다음과 같습니다. 
----------------------------------------------------------------------------------------
s="Hel lo!"
print len(s)
----------------------------------------------------------------------------------------
(출력 결과)
7
----------------------------------------------------------------------------------------

 마지막으로, 문자열내 포함관계 여부를 알 수 있는 키워드가 있습니다. in과 not in 인데, 참 거짓에 따라 True/False를 반환합니다. in은 포함할 경우, not in은 포함하지 않을 경우 True를 반환합니다.
----------------------------------------------------------------------------------------
s='park Hye Ung'
print 'park' in s
print 'park' not in s
print 'hello' not in s
----------------------------------------------------------------------------------------
(출력 결과)
True
False
True
----------------------------------------------------------------------------------------

* 출처 : 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍
          두산 백과 - 복소수




파이썬의 기본문형


- 예약어

 

 다른언어를 공부해 보신분들은 아시겠지만 프로그래밍 언어에는 예약어가 있습니다. 예약어는 키워드라고도 하며, 이미 문법적인 용도로 사용되고 있기때문에 변수등의 식별자로 사용하면 안되는 단어들을 뜻합니다.

 파이썬의 버전에 따라 예약어의 종류와 수가 다릅니다. 저는 ipyton 2.7.11 버전을 사용하고있는데, 2.7.11 버전은 31개의 예약어가 있습니다. 

 아래 코드는 예약어를 출력하고, 예약어가 저장된 리스트 즉, 예약어의 수를 알아보는 코드입니다. #은 주석입니다.



import keyword            # keyword 모듈을 불러옴

print keyword.kwlist       # keyword모듈이 지원하는 kwlist를 출력

print len(keyword.kwlist) # 예약어가 저장된 리스트의 길이 출력



 아래 그림을 보면 위에서 사용한 print함수, import 또한 예약어라는걸 확인 할 수 있습니다. 추가로 len함수는 특정 모듈을 import하지 않고도 사용할 수 있는 내장 함수입니다.


- 내장 함수

 
 내장 함수는 위에서 사용한 len함수처럼 특정 모듈을 추가하지않고, 기본적으로 제공하는 함수를 뜻합니다. 아래 함수들이 내장함수입니다.

1) abs(x) : 수치형 자료 x의 절대값을 반환하는 함수

2) max(s) : sequence자료형(문자열, 리스트, 튜플)을 입력받아 그 자료가 지닌 값중 가장 큰 값을 반환하는 함수

  - print max("pyton") -> 아스키 코드가 가장 큰 y 반환

  - print max([1,2,3])   -> 리스트에서 가장 큰 3 반환

3) min(s) : max()의 반대로 가장 작은 값을 반환하는 함수

4) pow(x,y) : a의 b승을 반환하는 함수

  - print pow(2,4)  -> 16

  - print pow(2,-1) -> 0.5

5) divmod(x,y) : x를 y로 나눈 몫과 나머지를 반환하는 함수 

  - print divmod(5,2) -> 2,1

5) chr(x) : 아스키 코드 값을 문자로 변환해주는 함수

  - print chr(97) -> a

  - print chr(65) -> A

  - print chr(48) -> 0(숫자 0이아닌 문자0)

6) str(object) : 임의의 객체 object에 대해 해당 객체를 표현하는 문자열을 반환하는 함수

  - print str(3) -> 3

  - print str([1,2,3]) -> [1,2,3]

7) range([start],stop,[step]) : 수치형 자료형으로 start, stop, step등을 입력 받아 해당 범위에 해당하는 정수를 리스트로 반환하는 함수

  - 인수가 하나인 경우(stop) : 0부터 stop-1까지의 정수 리스트 반환

    print range(10) -> [0,1,2,3,4,5,6,7,8,9]

  - 인수가 두개인 경우(start, stop) : 0부터 stop-1까지의 정수 리스트 반환

    print range(3,10) -> [3,4,5,6,7,8,9]

  - 인수가 하나인 경우(start, stop, step) : 0부터 stop-1까지의 정수리스트를 반환 하되, step인것들만 반환

    print range(1,10,2) -> [1,3,5,7,9] # 각 원소가 step만큼 차이가 남

8) type(a) : a의 자료형을 반환하는 함수

   - print type(1) -> int(정수형)

   - print type(1.5) -> float(실수형)

   - print type('abc') -> str(문자형)

   - print type([1,2,3,4]) -> list(리스트)


- 식별자

 
 파이썬에서 식별자는 변수, 함수, 모듈, 클래스 또는 객체를 식별하는데 사용되는 이름을 말합니다. 가장 흔히 사용하는 식별자는 변수 이름입니다.
 식별자의 조건은 다음과 같습니다.
  - 대소문자 구분(a와 A는 다름)
  - 식별자는 문자(A~Z,a~z) 또는 언더바(_)로 시작할 수 있고, 두번째부터는 숫자도 가능
  - 특수문자(@,$,%등.)는 사용할 수 없음
  - 예약어나 내장함수, 모듈이름으로 만드는 일이 없도록 주의해야함


- 변수

 
 파이썬에서 변수가 생성되는 시점은 해당 변수에 임의의 값이 할당될 때 입니다. 아래와 같은 경우에 a=1에서 변수 a가 생성이됩니다. 변수의 타입을 따로 적지않고, 변수에 값이 할당될 때 변수의 타입이 정해집니다.



a=1

print # 그냥 print함수만 사용할 경우 한줄이 띄어집니다.

 변수의 삭제는 del이라는 예약어를 사용합니다.



a=1

print a
del a


- 기초 문형

 
 1) 연속라인 : 코딩이 길어졌을 때 한줄로 인식하도록 하는 기능입니다. 역슬래시(\)를 사용합니다.

a=1

b=3

if(a==1) and \ 

b(==3) : 

print 'connected lines'


 반대로 한 라인에 두문장을 이어서 쓸때는 세미콜론(;)을 사용합니다. 코드의 가독성 때문에 잘 사용하지 않는다고 합니다.


a=1; b=2

2) 할당문 : 등호(=)를 사용하는 연산입니다. 왼쪽에는 변수가와야합니다. 표현식은 오른쪽 항에만 올 수 있습니다.


a=1 # o

b=a # o

1+3=c # x

d=1+3 # o

그렇다면, a=(b=c+d)도 가능할까요? 

위의 식은 불가능합니다. b=c+d는 식(Expression)이아니라 문(Statement)이기 때문입니다.



 아래의 형태로도 할당이 가능합니다.



c,d = 3,4 처럼 한번에 할당도 가능 c->3, d->4

x=y=z=0 처럼 할당이 가능한데, 이때 오른쪽 항부터 연산이 진행됩니다.

z=0 -> y=z -> x=y



 그렇다면, C언어에서 temp를 써서 두 변수의 값을 swap하는것 처럼 변수의 swap 어떻게 할까요? 위의 할당 방법을 이용하면 쉽게 swap할 수 있습니다.



a=3

b=4

a,b=b,a



3) 확장 할당문 : 확장 할당문은 +=, -=, *=, /= 4가지가 있습니다.
  - a += 4는 a=a+4와 동일합니다. 아래와 같은 경우로도 사용이 가능합니다.



a=10      # a에 10을 할당하고

a *= 2+3 # 2+3를 먼저 연산해서 a에 5를 곱한 값인 50을 저장하고

print a    # 50을 출력합니다.



4) 객체와 할당
 객체의 변수는 해당 객체의 레퍼런스를 지니고 있습니다. 레퍼런스는 가리키고 있는 값을 뜻합니다. a=1 이라는 문장에서 a는 이름, 1은 객체이며 변수 a는 1을 가리킵니다. (a->1인 형태)
 아래의 코드와 같이 a,b,c 3개의 리스트를 만드는데, b와 c가 a를 가리키게 한 코드입니다.


a=[1,2,3]

b=[10,a,30]

c=['x',a,'z']


print a

print b

print c



 결과는 아래 그림과 같습니다. 처럼 b,c리스트 안에 a리스트가 출력됩니다.


위 코드는 아래의 그림처럼 a가 [1,2,3]리스트를 가리키고, b,c에서도 a를 가리켜서 결국에는 [1,2,3]리스트를 가리킵니다.






콘솔 입·출력


 콘솔(Console)은 윈도우에서 커맨드창(cmd창), 리눅스에서 터미널창(Terminal)을 뜻합니다. 콘솔에서 입·출력에대해 알아보겠습니다. 이클립스에서도 콘솔창을 제공해서 실습을 이클립스에서 했습니다.

- 입력

 콘솔에서의 입력은 raw_input이라는 내장함수를 이용합니다. raw_input함수의 사용은 아래와 같습니다.



name = raw_input('your name : ') # raw_input함수로 입력을받아 name변수에 저장

print name


 아래 그림과같이 your name : 이라는 문자열이 출력되고 뒤에 입력할 수 있는 부분에 이름을 입력하면 name이라는 변수에 저장해서 name을 출력한 결과입니다.

 추가적으로 내장 함수중에 int()함수가 있습니다. int()함수는 문자열을 정수로 변환하는 함수입니다. 

 raw_input함수를 통해 정수를 입력받고 2를 더하는 코드를 작성했습니다. 정상적으로 실행이 될까요?



a = raw_input('input : ')

print a+2


 아래와 같이 문자형과 정수형 객체는 연결할 수 없다는 오류가 출력됩니다. raw_input 함수는 입력 값을 문자형으로 인식한다는 걸 알 수 있습니다.


 이 때, 사용하는게 int()함수입니다. int함수를 사용해서 코드를 재구성 하고 실행하면 정상적으로 출력이됩니다.



a = int(raw_input('input : ')) #raw_input 함수를 int 함수의 인자로 사용

print a+2




 입력을 할 수 있는 함수에는 input()함수도 있습니다. input()함수는 raw_input함수와 다르게 입력한 값에 따라서 자료형을 인식합니다. 또한 연산식을 입력할 수도 있습니다.



a=input('input : ') # 따로 int함수를 사용하지 않아도 정수를 입력하면 정수형으로 인식합니다.

print a+10




 문자열을 입력하는 경우, 입력할 때 따옴표를 써줘야 오류가 발생하지 않습니다.



a=input('input : ')

print a




- 출

 출력은 여태까지 계속 사용했던 print함수를 이용해서 하는데, print 함수에 대해 알아보겠습니다.

 print 함수는기본적으로 줄바꿈을 수행 합니다. 



print 1 

print 2

(결과)

1
2



print 함수에 콤마(,)를 용하게되면 한칸을 띄어줍니다.


print 1, 2


(결과)

1 2


다음과 같이 숫자가 아닌 식도 출력이 가능합니다.


print 5+5, 4*9


10 36



 그렇다면, 숫자와 문자가 합쳐진 "2AM"과같은 문자도 출력할 수 있을까요? 아래와 같이 입력을 하면 오류가 발생합니다. 숫자와 문자형은 더해주지 않습니다.


print 2+'AM'


 

 2AM과 같이 숫자와 문자가 결합된 문자를 출력하고 싶은 경우는 숫자또한 문자로 표현해줘야 합니다. 물론 한번에 "2AM"이라고 쓸 수도 있겠지만, 문자의 결합도 가능하다는점을 말하고 싶었습니다.


print '2'+'AM'





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




파이썬 개발환경 구축(설치)


 파이썬을 개발하는 여러 환경중에 제가 구축한 환경은 두 가지가 있습니다. Python 전용 통합개발환경(IDE) Enthought Canopy를 설치하는방법과 이클립스에서 설치하는 방법입니다. Canopy를 설치하면 환경설정 관련된 것들이 자동적으로 설정되있어서 그냥 Pyton을 설치하는 것보다 간편하다고 합니다. 하지만, IDE가 부족한 면이있어 이클립스도 같이 활용하는것이 좋다고 합니다.


Enthought Canopy 설치


 첫번째는 Enthought Canopy 설치 방법입니다. Enthought Canopy는 별도의 파이썬 설치 없이 아래 통합개발환경 링크에서 설치를 하면 자동으로 파이썬이 설치됩니다

https://www.enthought.com/products/canopy/


사이트에 들어가서 중앙하단에 보이는 Get Canopy 초록색버튼을 클릭한 후에 free버전을 다운로드 합니다.


기본적으로 설치를 마치고 나면 다음과같은 두 아이콘이 생성됩니다.  


 윈도우 커맨드 창에서 정상적으로 설치가 되었는지 확인을 해보았습니다. 기본적으로 python이라고 입력하면 실행이되며, 대화식으로 print 1+2라는 구문을 입력했을 때 3이 실행되는걸 확인 할 수 있습니다. 종료하는 명령은 exit가 아닌 exit()나 Ctrl+Z를 누르게 되면 종료가 됐습니다. 다음은 ipython을 실행했을때 python과 비슷하지만 색 효과가 있어 좀더 깔끔한 대화환경을 제공할 것 같습니다. 아래 그림은 python과 ipython의 비교 입니다.




- 이클립스에서 파이썬 설치


 두번째 방법은 이클립스에서 설치하는 방법입니다. 저는 이클립스를 기존에 사용해서 바로 설치했는데 없으신 분들은 이클립스를 설치하신 이후에 설치하셔야 합니다.

 설치과정은 아래와 같습니다. 이클립스를 써보신분들은 아실수도 있는 방법입니다. 가장먼저, Help탭에서 Eclipse Marketplace를 클릭합니다.


Eclipse Marketplace 창이뜨면 왼쪽 노란색 부분에 python이라고 입력하고 오른쪽 노란색 Go를 눌러주면 아래와 같은 창이뜨는데 빨간색 부분에있는 PyDev-Python IDE for Eclipse 를 Install 버튼을 눌러 설치해주시면됩니다. 


아래 그림과 같이 기본적으로 체크되어있는대로 설치하시면 됩니다.


설치 도중에 이런 창이뜨는데 체크를 꼭 해주시고 ok 버튼을 눌러야합니다.


아래 두번째 창 역시 Yes를 눌러줘야합니다. 저같은 경우, 재시작이 안되서 이클립스 File탭에서 직접 재시작을 해줬습니다.


설치가 끝나게되면 아래 그림과같이 이클립스 우측 상단에있는 빨간색 부분 아이콘 을 눌러서 PyDev로 바꿔줍니다. 아래 그림처럼 PyDev가 없다면 설치가 정상적으로 이루어지지 않은 것입니다.


PyDev로 바꿔주고 나면 시스템 내 파이썬 인터프리터 검색을 설정해줘야 합니다. 이클립스 Window탭에서 Preferences를 클릭합니다. 


 Preferences창에서 PyDev-Interpreters-Python Interpreter에 들어가서 Quick Auto-Config 버튼을 눌러줍니다. 눌러주면 아래 그림과같이 자동으로 라이브러리 들이 추가가 됩니다.


설치가 끝난 후 예제소스를 실행해보기 위해 프로젝트를 만들고 그안에 디렉토리를 만든후 test.py라는 소스파일을 추가합니다.


간단한 예제 소스를 작성해보았습니다. 소스코드를 작성한뒤 초록색버튼으로 run을 하게되면 실행이되고 아래 콘솔창에 결과가 나옵니다.

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

# -*- coding: utf-8 -*-

print 1+2

print "안녕하세요"

print 9/5

print 12-32

print 9.0/5.0

print 9/5.0

print 9/5 #정수/정수 = 정수로 출력

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

# -*- coding: utf-8 -*- 를위에쓰는 이유는 한글을 사용하기위해서 라고합니다. 다른 언어들과는 다르게 print 함수 하나만으로 정수,실수 계산 및 문자열을 출력했습니다. Python에서 주석은 #입니다.


아래는 콘솔창의 결과입니다. 

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

3

안녕하세요

1

-20

1.8

1.8

1

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

정수/실수를 했을때는 실수로 계산이되지만, 정수/정수는 1.8임에도 불구하고 정수인 1로 결과가 나왔습니다.


다음 소스는 문자열을 합치는 소스입니다. a와 b에 각각 문자열을 넣고 합칠때에는 "+"를 사용해 합쳤습니다.

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

a='park'

b='hyeung'

print a+b

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


아래 소스는 파이썬 버전을 알아보는 소스입니다. sys라는 모듈을 활용해 버전을 확인해 보았습니다. 

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

import sys

print sys.version

print

print sys.version_info

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


아래와 같이 2.7.11버전이 설치되있는 걸 확인할 수 있습니다. print함수를 그냥 사용했을때는 아래와같이 한줄 공백이 출력됩니다.

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

2.7.11 | 64-bit | (default, Jun 11 2016, 11:33:47) [MSC v.1500 64 bit (AMD64)]


sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

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


마지막으로 cal.py라는 소스를 작성해 저장하고 윈도우 커맨드창에서 실행을 해봤습니다. 먼저 아래 소스는 달력을 출력하는 소스입니다. 

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

import calendar

calendar.prmonth(2016, 12)

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

실행을 했을때, 콘솔창에 다음과같이 2016년 12월 달력이 출력됐습니다.


저는 D:\PythonProject\Python\01 이경로에 소스파일을 작성해서 커맨드 창에서 경로로 이동을 한뒤에 실행을 했습니다. ipython cal.py로 실행을 하게되면 커맨드 창에서도 똑같이 달력이 출력되는걸 확인할 수 있습니다.



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



스크립트 언어와 파이썬


 요즘 뜨고있는 파이썬 언어를 한국기술교육대학교 온라인평생교육원 강의를 들으면서 공부를 시작하려고 합니다. 

강의 내용과 제 생각을 더해 글을 작성할 계획입니다.


- 스크립트 언어

- Scripts : 연극 대사 등이 적혀있는 스크립트의 유래 

- 스크립트 = 소스코드

- 인터프리터 방식 : 한줄단위로 해석, 수행


 1-1. 스크립트 언어의 절차


- 바이트 코드 : 어셈블리어에 가까운 언어로 기계어와는 다름


1-2. 컴파일 언어와의 비교

- 컴파일 언어는 자원을 많이 요구하고 시간이 많이 소요됨

- 수정이 빈번한 경우 컴파일 언어는 전체를 컴파일 해야하므로 인터프리터 방식이 유리


1-3. 스크립트언어의 장·단점

- 장점

소스 코드 수정이 빠르고 간단하게 이루어짐 → 개발 시간 단축

- 단점

중간코드를 만드는 것은 간단하지만 실제로 실행하는 시간은 오래걸림

실행 시간이 오래걸림


1-4. 대표적인 스크립트 언어

- JavaScript

- ActionScript : 주로 플래시 개발을 위해 사용되는 언어

- Perl 

- PHP

- Python 

- Lua, Ruby : 최근에 개발된 스크립트 언어


- 파이썬 언어의 유래 및 특징


2-1. 파이썬의 유래

- Phyton의 사전적 의미 : 독이없는 뱀, 그리스 신화에 나오는 악마

- 네덜란드의 Guido Van Rossum이 만들었으며, 영국의 쇼 프로그램의 이름에서 따옴

- ABC라는 언어에서 출발함

Guido Van Rossum


2-2. 파이썬을 배워야 하는 이유

- 생산성이 높기때문


2-3. 파이썬의 특징

- 간단하고 쉬운 문법

- 고수준의 내장 객체 자료형 제공

- 플랫폼 독립적 언어

- 메모리 자동관리 → 추가 코딩이 필요하지않음

- 쉬운 유지보수

- 많은 수의 라이브러리 제공

- 짧아지는 코드

- 높은 확장성 (모듈을 임포트하거나 자신의 코드를 모듈로만들어서 제공할 수 있음)

- 들여쓰기를 철저하게 지키도록 설계됨(문법적으로 강제로 지키게 설계됨) → 가독성을 높여주고 재사용하기 쉽게 만들어줌


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



+ Recent posts