Blog | Tag | Local | Media | Guest | Login  RSS
프로그래밍에 해당되는 글 18건
2009.10.06 :: python __name__
2009.10.06 :: python class
2009.09.22 :: python function
2009.09.22 :: python for
2009.09.22 :: python while
2009.09.22 :: python if
2009.09.22 :: python 변수
진리의 나눔 고딕 코딩

클릭하면 크게 보여요. <진리의 나눔 고딕 코딩>


Consolas 에서 Lucida Console 로 넘어갔다가 나눔 폰트로 넘어왔다.

네이버에서도 착한 일은 한다. 비록 이걸로 장사를 하려고 들지는 몰라도 어쨌든 지금은 공짜니까

우월한 나눔폰트 널리 써서 이롭게 하세~

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

우월한 나눔 폰트  (0) 2009.12.29
python __name__  (0) 2009.10.06
python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22

 태그 : 
python __name__
if(__name__ == "__main__"):
    print 'hello'

py 파일을 직접 실행할 때는 __name__ 변수에 "__main__" 값이 들어간다.
따라서 해당 파일을 모듈로 사용하되 모듈 파일을 자체적으로 테스트할 필요가 있을 때
위와 같이 작성하여 아래쪽에 테스트코드를 작성할 수 있다.

def power(n1, n2):
    return n1 ** n2

if(__name__ == "__main__"):
    print power(10, 2)
직접 실행하면 100이 찍히지만 모듈로 import 하면 화면에 출력되지는 않는다.
저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

우월한 나눔 폰트  (0) 2009.12.29
python __name__  (0) 2009.10.06
python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22

python class
class 클래스이름[상속클래스명[, 상속클래스명...]]:
    <클래스 변수 1>
    <클래스 변수 2>
    ...
    def 클래스함수1(self[, 인수1, 인수2,,,]):
        <수행할 문장 1>
        <수행할 문장 2>
        ...
    def 클래스함수2(self[, 인수1, 인수2,,,]):
        <수행할 문장1>
        <수행할 문장2>
        ...
    ...
다중 상속 가능.

텅 빈 클래스
class CEmpty:
    pass

CEmpty 클래스의 인스턴스
empty = CEmpty()

클래스
>>> class CNotEmpty:
...     literal1 = "Life is short."
...     literal2 = "You need a Python"
...     def power(self, a, b):
...         result = a ** b
...         print "%s의 %s 승은 %s 입니다." % (a, b, result)
...
>>> ne = CNotEmpty()
>>> ne.power(2,10)
2의 10승은 1024입니다.
>>> print ne.literal1
Life is short

self가 C++의 this와 같음. 자신의 레퍼런스 변수.

클래스 생성자와 파괴자 __init__, __del__
>>> class CNotEmpty:
...     literal1 = "Life is short."
...     literal2 = "You need a Python"
...     def __init__(self, val):
...         self.initval = val
...     def power(self, a, b):
...         result = a ** b
...         print "%s의 %s 승은 %s 입니다." % (a, b, result)
...     def __del__(self):
...         print '객체 %s 파괴됨' % (self)
...
>>> ne = CNotEmpty(10)
>>> print ne.initval
10
>>> del ne
객체 <__main__.ne instance at 0x02827E90> 파괴됨
>>>
생성자와 파괴자를 명시적으로 쓰지 않으면 아무 일도 하지 않는 디폴트 생성자, 디폴트 파괴자가 자동으로 호출됨

클래스 멤버의 접근
>>> class c:
...     li1 = "ab"
...     def __init__(self, i):
...         self.i = i
...
>>> ic = c("abc")
>>> c.li1
'ab'
>>> c.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class c has no attribute 'i'
>>> ic.li1
'ab'
>>> ic.i
'abc'
>>> del ic
>>> ic.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ic' is not defined
>>>

연산자 오버로딩도 되나 + 연산자의 함수이름은 __add__와 같이 연산자의 함수 이름이 특이하므로 알아둘 필요가 있음.

연산자
 __init__
 생성자
 __del__  소멸자
 __add__  a + b
 __or__
 a | b
 __repr__  레퍼런스 print a
 __call__  함수호출 a()
 __getattr__  속성 참조 .연산 a.blah
 __getitem__  인덱싱 a[i]
 __setitem__  인덱스 치환 a[i] = v
 __getslice__  슬라이싱 a[:]
 __cmp__  비교 a > b
파이썬 라이브러리는 요기에 http://www.python.org/doc/current/download.html

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

우월한 나눔 폰트  (0) 2009.12.29
python __name__  (0) 2009.10.06
python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22

 태그 : 
sys_arg.py
import sys

args = sys.argv[:]
for i in args:
    print i

python sys_arg.py abcd aaaa dcba

결과
sys_arg.py
abcd
aaaa
dcba

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python __name__  (0) 2009.10.06
python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22
python for  (0) 2009.09.22

 태그 : 
쓰기
f = open("새파일.txt", 'w')

for i in range(1, 11):
    data = "%d 번째 줄입니다.\n" % i
    f.write(data)

f.close()

읽기 (C/C++ 스타일)
f = open("새파일.txt", 'r')

while 1:
    line = f.readline()
    if not line: break
    print line

f.close()

리스트로 읽기
f = open("새파일.txt", 'r')
lines = f.readlines()


for line in lines:
    print line

f.close()
파일 전체를 읽어 줄 단위로 끊어 리스트에 넣음. readlines 함수를 사용.

파일 통채로 한번에 읽기
f = open("새파일.txt", 'r')
data = f.read()

print data

f.close()

C/C++의 FILE 구조체와 같이 tell 함수와 seek 함수를 사용할 수 있다.
만약 seek(-1) 처럼 인자로 음수 값을 넘기면 어떻게 되는지 직접 확인해보자.

 r (읽기 모드)  파일을 읽기만 할 때
 w (쓰기 모드)  파일에 쓸 때
 a (추가 모드)  파일의 마지막에 새로운 내용을 추가 시킬 때

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22
python for  (0) 2009.09.22
python while  (0) 2009.09.22

 태그 : 
python function
def 함수이름(입력 인수):
    <수행할 문장1>
    <수행할 문장2>
    ...

가변인자 리스트를 사용하는 함수
>>> def sum_many(*args):
...     sum = 0
...     for i in args:
...         sum = sum + i
...     return sum
...
args라는 변수는 입력값들을 전부 모아서 튜플로 만들어 줌

튜플을 반환하는 함수
>>> def sum_many(*args):
...     sum = 0
...     for i in args:
...         sum = sum + i
...     return True, sum
...

튜플은 반환하는 함수를 사용해서 하나의 변수에 담으면 변수는 튜플 레퍼런스가 되고 각각 따로 담으면 각 데이터형의 레퍼런스가 된다.

즉,
>>> a = sum_many(1,2,3,4,5)
>>> a, b = sum_many(1,2,3,4,5)
둘 다 에러가 없다. 변수 a가 레퍼런스 하는 것이 다를 뿐.
그렇다면 3개의 값을 반환하는 함수의 결과를 2개의 변수에 담으면 어떻게 될까?

디폴트 파라미터를 가지는 함수
def say_myself(name, old, sex=1):
    print "나의 이름은 %s 입니다." % name
    print "나이는 %d살입니다." % old
    if sex:
        print "남자입니다."
    else:
        print "여자입니다."
C++과 마찬가지로 디폴트 파라미터 오른쪽에는 디폴트 파라미터만 사용할 수 있다.

재귀함수 Recursion
def countdown(n):
    print n
    if n == 0:
        print "0 입니다."
    else:
        countdown(n-1)


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22
python for  (0) 2009.09.22
python while  (0) 2009.09.22
python if  (0) 2009.09.22

 태그 : 
python for
for 변수 in 리스트(또는 터플, 문자열):
    <수행할 문장1>
    <수행할 문장2>
    ...


>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
...     i is test[1]
...
False
True
False
for 문을 진행하면서 순서대로 i가 test_list의 요소를 레퍼런스함

continue, break 역시 for 문에서 사용가능

range 함수
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = range(1, 11)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for와 range의 결합
>>> fac = 1
>>> for i in range(1, 11):
...     fac = fac * i
...
>>> print fac
3628800

for 문을 이용해 리스트의 요소 접근하기
>>> test_list = ['one', 'two', 'three']
>>> for i in range(len(test_list)):
...     print test_list[i]
...
one
two
three

다양한 for 문
>>> a = [(1,2), (3,4), (5,6)]
>>> for (first, last) in a:
...     print first + last
...
3
7
11

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22
python for  (0) 2009.09.22
python while  (0) 2009.09.22
python if  (0) 2009.09.22
python 변수  (0) 2009.09.22

 태그 : 
python while
# -*- coding: euc-kr -*-
# coffee.py

coffee = 10
while 1:
    money = int(raw_input("돈을 넣어 주세요: "))
    if money == 300:
        print "커피를 줍니다."
        coffee = coffee -1
    elif money > 300:
        print "거스름돈 %d를 주고 커피를 줍니다." % (money -300)
        coffee = coffee -1
    else:
        print "돈을 다시 돌려주고 커피를 주지 않습니다."
        print "남은 커피의 양은 %d개 입니다." % coffee
    if not coffee:
        print "커피가 다 떨어졌습니다. 판매를 중지 합니다."
        break

>>> a = 0
>>> while a < 10:
...     a = a+1
...     if a % 2 == 0:
...         continue

...     print a
...

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python function  (0) 2009.09.22
python for  (0) 2009.09.22
python while  (0) 2009.09.22
python if  (0) 2009.09.22
python 변수  (0) 2009.09.22
python boolean  (0) 2009.09.18

 태그 : 
python if
>>> a = 1
>>>
if a == 1:
...     print 'T'
... elif a == -1:
...     print '?'
... else:
...     print 'F'
...
T

조건문의 뒤에는 반드시 콜론(:)을 붙여주고 실행문은 반드시 같은 깊이로 들여쓰기 해야한다.
들여쓰기가 단 한칸이라도 맞지 않으면 오류.

비교연산자
x < y    -  x가 y보다 작다 
x > y    -  x가 y보다 크다
x == y   -  x와 y가 같다 
x != y    -  x와 y가 같지 않다 
x >= y   -  x가 y보다 크거나 같다 
x <= y   -  x가 y보다 작거나 같다

참고
>>> a = [1 , 2, 3]
>>> b = copy(a)
>>> a is b
False
>>> a == b
True

논리연산자
x or y     x와 y둘증에 하나만 참이면 참이다
x and y  x와 y 모두 참이어야 참이다
not x      x가 거짓이면 참이다

요소연산자
x in 리스트, x not in 리스트
x in 튜플, x not in 튜플
x in 문자열, x not in 문자열
>>> 'a' in ('a', 'b', 'c')
True
>>> 'j' not in 'python'
True

조건문의 통과
>>> pocket = ['cellphone', 'key']
>>> if 'coin' in pocket:
...     pass
... else:
...     print 'call operator'
...
조건문과 제어문에서의 탈출 방법은 다르다는 것을 명심
저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python for  (0) 2009.09.22
python while  (0) 2009.09.22
python if  (0) 2009.09.22
python 변수  (0) 2009.09.22
python boolean  (0) 2009.09.18
python dictionary  (0) 2009.09.18

 태그 : 
python 변수
모든 변수는 객체의 레퍼런스
>>> a = 3
>>> b = 3
>>> a is b
True
변수는 모두 레퍼런스. 따라서 a, b는 정수형 객체 3을 레퍼런스하고 있다. a와 b는 가리키고 있는 대상이 동일하므로 a is b의 결과가 1로 나온다. 이 점은 C/C++과는 다른 점. 다시 말해 변수를 선언하면 = 연산자 오른쪽에서 객체가 없으면 객체가 생성되고 레퍼런스 카운트가 증가.

변수 없애기
>>> a = 3
>>> b = 3
>>> del(a)
>>> del(b)
변수를 모두 제거해서 레퍼런스 카운트가 0이 되면 가비지 컬렉터가 정수형 객체 3을 삭제함

튜플, 리스트로 변수만들기
>>> a, b = 'python', 'life'
>>> (a, b) = ('python', 'life')
>>> [a, b] = [
'python', 'life']
>>> a, b = fuction_to_return_tuple()
튜플은 괄호 생략이 가능함.

변수 값 swap 하기
>>> a, b = 'python', 'life'
>>> a, b = b, a
>>> a
'life'
>>> b
'python'

참고
>>> a = [1, 2, 3]
>>> b = a
>>> a[0] = 0
>>> a
[0, 2, 3]
>>> b
[0, 2, 3]
>>> a is b
True
모든 변수는 레퍼런스 변수이므로 '='로 대입시 shallow copy가 일어남
따라서 리스트의 deep copy가 필요한 경우에는 리스트의 모든 요소를 대입해주면 됨.
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[0] = 0
>>> a
[0, 2, 3]
>>> b
[1, 2, 3]
>>> a is b
False
>>> from copy import copy
>
>> b = copy(a)

정수형, 문자형, 문자열형 객체와 같이 객체의 요소를 얻을 수 없는 객체의 deep copy는?

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python while  (0) 2009.09.22
python if  (0) 2009.09.22
python 변수  (0) 2009.09.22
python boolean  (0) 2009.09.18
python dictionary  (0) 2009.09.18
python list, tuple  (0) 2009.09.18

 태그 : 

티스토리 툴바