반응형

idle -n 터틀

alt n,p 앞,이전

370/7.

 

>>> for a in [1,3,4] : # 안에있는것은 속하는 것이다.
 print a
1
3
4

>>>

range(10) range

def box():
 for a in range(4):
  forward(100)
  left(90)
  
>>> box()

함수는 재정의하기.


3월 9일

# 주석문

input = 수식으로 계산

raw_input = 수식만. 그대로 문자열만 받음

리터럴형 = 값을 하나만
저장형 = 값 여러개

-C언어와 다름-

숫자객체는 변경 불가능

x is y  같은 객체

a == b , a is b 자주쓰이는 숫자 공유 (GC 안됨)

들여쓰기로 블럭을 구분한다.

>>> if s >= 90 :
 print 'A'
elif s >= 80 :
 print 'B'
elif s >= 70 :
 print 'C'
else:
 print 'F'

슬라이싱

>>> s[0:5]
'pytho'

>>> s[5:]
'n rules'
 p  y
0 1
0부터시작 -1 빼기

s[0:10:2] 2칸씩 단계
s[::-1]
'selur nohtyp'

3.11 수
0 8진수
0x 16진수
2**10 2^10


a > 1 and b > 1 or b < 10 and c < 5
-------------    ---------------
           1                      2

int(4.2) or int (-34.2) 다 버린다.

float(a)/b 형변환..

ctrl + space 보기 인텔리젼스

for a in range(0,360,10):
print a, math.sin(math.radians(a)) 파이구하기

sin 0도부터 350도까지 출력
>>> for a in range(0,360,10):
 print "%4s %7.3f" %(a, math.sin(math.radians(a)))

x = -b +- / b^2-4ac /2a

x = (-b + math.sqrt(b*b-(4*a*c)))/(2*a)  //가로 조심하기

3.16
문자열 변경 안 된다. 문자열 객체

>>> 'P' + s1[1:]
"Python 's"
>>> s6

>>> s1.upper()
"PYTHON 'S"

>>> s1
"python 's"
>>>

s2 = 'python\'s'
s2 = "pyhotn's'"

멀티라인 스트링

s3 = """line1
line2
line3
"""
>>> print s3
line1
line2
line3

>>> for na in name:
 print letter % name

>>> name = ['sysop', '카페지기', '세노']
>>> for name in names:
 print name


>>> s.index('like')
2

>>> s.find('aaa')
-1

>>> s.index('aaa')
예외

>>> s.capitalize()
'I like programming.'
>>> s.title()
'I Like Programming.'
>>> s = s + s
>>> s
'I like programming.I like programming.'
>>> s.count('like')
2
>>> s.find('like')
2
>>> s.find('like,3)

>>> s.startswith('I like')  앞에 문자열 검색
True
>>> s.endswith('ing') 뒤에 문자열 검색
False
>>> s.endswith('ing.')
True

>>> for fname in L:
 if fname.lower().endswith('.jpg'):
  print fname

  
a.jpg
d.jpg
>>> L
['a.jpg', 'b.exe', 'c.data', 'd.jpg']

>>> s.strip()
'i like programming'
>>> s
'      i like programming      '
>>> s.lstrip()
'i like programming      '
>>>
>>> s.rstrip()
'      i like programming'
>>>
>>> s.replace('like', ' love')
'      i  love programming      '
>>>

2번째 라인만 뽑기

s.strip().splitlines()[1].split(':')[0]
>>> s.strip().splitlines()[2].split(':')[0]
'john'
>>> s.strip().splitlines()[1].split(':')[0]
'gslee'
>>> s.strip().splitlines()[0].split(':')[0]
'root'
>>> s.strip().splitlines()[0].split(':')[1]
'x'
>>> s.strip().splitlines()[0].split(':')[2]
'001'
>>> s.strip().splitlines()[0].split(':')[0]
'root'
>>>

for test in s.strip().splitlines():
 L.sort()
 print L

이름뽑아서 정렬해서 하기
출력 할때또 포문 쓰기 깔끔~ 텍스트로 붙히기 스크린 캡쵸. 줄 맞추기, 이미지 캡쵸

> for test in range(3):
  L.append(s.strip().splitlines()[test].split(':')[0])
  L.sort()
  printf L
 
SyntaxError: invalid syntax
>>>
>>>
>>> for test in range(3):
  L.append(s.strip().splitlines()[test].split(':')[0])
  L.sort()
  print L

 
['root']
['gslee', 'root']
['gslee', 'john', 'root']
>>> L
['gslee', 'john', 'root']
>>>
>>>
>>> L

3/17
split, join 바늘과 실
'i LIKE PROGRMAMMING, I LIKE PYHTON'
>>> workds = a.split()
>>> a
'i LIKE PROGRMAMMING, I LIKE PYHTON'
>>> workds
['i', 'LIKE', 'PROGRMAMMING,', 'I', 'LIKE', 'PYHTON']
>>> ' '.join(workds)
'i LIKE PROGRMAMMING, I LIKE PYHTON'
>>> workds
['i', 'LIKE', 'PROGRMAMMING,', 'I', 'LIKE', 'PYHTON']
>>> ' '.join(workds)
'i LIKE PROGRMAMMING, I LIKE PYHTON'
>>> words = ':'.join(workds)
>>> words
'i:LIKE:PROGRMAMMING,:I:LIKE:PYHTON'
>>> words

한글단위 처리할때 유니코드를 사용한다.
r"""Support for regular expressions (RE).

 len(glob.glob('lib/*.py'))

>>> len(glob.glob('lib/[ab]*.py')) 정규식 기본적만자원 a or b


.py로 끝나는 파일들의개수

백슬러쉬 \\ = /

 a혹은 b

파일이름.확장자표함

split 쪼개고

마지막만 팝

파일사이즈출력
os.path

1970년 1월 1일기준
>>> time.ctime(1237354442.234)
'Wed Mar 18 14:34:02 2009'
>>> time.ctime(1237354442.234).split(' ')
['Wed', 'Mar', '18', '14:34:02', '2009']
>>> time.ctime(1237354442.234).split(' ')[3]
'14:34:02'
>>> time.ctime(1237354442.234).split(' ')[3]
'14:34:02'

3.23일

리스트

queue.pop(0)

>>> for word in L:
 print word


one
two
three

 
['one', 1]
['two', 2]
['three', 3]
>>> for ele in L:
 print ele[0], ele[1]

 
one 1
two 2
three 3

>>> for ele in L:
 print ele[0], ele[1]


>>> for word, num in L:  GOOD 코드  변수에 의미를 부여할것
 print word, num

one 1
two 2
three 3

1
>>> def mycmp(a,b):
 if a>b:   //정렬
  return 1
 elif a<b:
  return -1
 else:
  return 0


술어구문
 
>>> mycmp(1,2)
-1

사전순 정렬
>>> L.sort(cmp=mycmp)

>>> def mycmp(a,b):
 return -cmp(a,b)
return cmp(b,a)

사전순 정렬

3으로 나눌때 나머지

def mycmp(a):
 if a % 3 == 0
  return -1
 else:
  return 0
>>> def mycmp(a,b):
 return cmp(a%3, b%3)
>>> for ele in sorted(L, cmp = mycmp):
 print ele,

L = [k * k for k in range(10)]

정규식

[[...], 'is not Unix'] reference count 2 개

값 변경 되지 않을떄 튜플
값 변경 될때 리스트

. 현재 디렉토리
.. 부모 디렉토리

정규식

('\d+-\d+', pid)  \d 숫자

3.29

사전
맵핑 자료형 해쉬

emeber
{'soccer': 11, 'basketball': 5, 'baseball': 9}
    키       값 
리스트 : 연속적 저장
사전 : 분산 저장

키---해쉬함수---저장주소<--값저장
                         순서없음,분산저장

"키"는 변경 불가능형 객체이다.
튜플 O
리스트 x

{'add': <function add at 0x011EF7F0>, 'sub': <function sub at 0x011EF830>}
>>> FT
{'add': <function add at 0x011EF7F0>, 'sub': <function sub at 0x011EF830>}
>>> FT
{'add': <function add at 0x011EF7F0>, 'sub': <function sub at 0x011EF830>}
>>> FT['add']
<function add at 0x011EF7F0>
>>> FT['add'](3,4)
-1
>>> FT['add'](3,4)
-1
>>> FT['add'](3,4)
-1
>>> FT['add'](3,4)
-1
>>>
>>> menu = {'apple':500, 'pear':2000, 'grape':1000}
>>> menu
{'grape': 1000, 'pear': 2000, 'apple': 500}
>>> item = 'orange'
>>> menu[item]


Traceback (most recent call last):
  File "<pyshell#190>", line 1, in <module>
    menu[item]
KeyError: 'orange'
>>> menu.get('apple')
500
>>> menu
{'grape': 1000, 'pear': 2000, 'apple': 500}
>>> menu.get('appsdf')
>>> menu.get('appsdf',-1)

>>> for key,value in menu.items():
 print key,value

 
grape 1000
pear 2000
apple 500
>>> menu
{'grape': 1000, 'pear': 2000, 'apple': 500}
>>> 'grape' in menu
True
>>> 'or' in munu

Traceback (most recent call last):
  File "<pyshell#240>", line 1, in <module>
    'or' in munu
NameError: name 'munu' is not defined
>>> 'oror in menu
SyntaxError: EOL while scanning string literal
>>> 'oror in menu
SyntaxError: EOL while scanning string literal
>>> 'oror' in menu
False
>>> L = [1,2,3,4,5]
>>> 3 in L
True
>>> s = 'pyhton rules'
>>> 'th' in s
False
>>> 'ht' in s
True
>>> ' r' in s
True
>>> '' in s
True
>>> 'sdf' in s
False

a = 1
a---------1[object]
__package__ 기본적인 디폴트 파이썬
{'FT': {'add': <function add at 0x011EF7F0>, 'sub': <function sub at 0x011EF830>}, 'sub': <function sub at 0x011EF830>, '__builtins__': <module '__builtin__' (built-in)>, 'menu': {'grape': 1000, 'pear': 2000, 'apple': 500}, 'L': [1, 2, 3, 4, 5], 'value': 500, '__package__': None, 'item': 'orange', 'add': <function add at 0x011EF7F0>, 'key': 'apple', 'memeber': {1: 100, 'basketball': 5, (1, 2, 3): 6, 'baseball': 9, 'soccer': 11}, '__name__': '__main__', 's': 'pyhton rules', '__doc__': None}

globals() 심볼테이블 보기 ~함수 밖~
locals() 지역심볼 테이블 보기 ~함수 안~

동적 언어~ 런타임시 심볼테이블 저장됨
add관련된 obejct 엑세스가능

set([]) : 집합  변경 O
frozenset : 집합 변경 X

a < b 부분집합이냐

Q) s = 단어수는?
    s = 중복되는 단어수는?
    s =  각 단어의 발생 횟수


for word in s.lower().split():
 if word in member:
  member[word] = member[word] +1
 else:
  memeber[word] = 1

for word in s.lower().split()
 member[word] = member.get(word,1)

단어 빈도수


for word in s.lower().split():
 if word in member:
  member[word] = member[word] +1
 else:
  memeber[word] = 1

for word in s.lower().split()
member[word] = member.get(word,0) + 1


단어 빈도수


for word in s.lower().split():
 if word in member:
  member[word] = member[word] +1
 else:
  memeber[word] = 1

for word in s.lower().split()
 member[word] = member.get(word,0) + 1

 

>>> for word in s.lower().split():
 memeber[word] = memeber.get(word,0) +1

단어 빈도수
>>> for word in s.lower().split():
 memeber[word] = memeber.get(word,0) + 1

4/1일

L = [1,2,3,4,5]
      1 1 1 1 1
ref   1 2 2 2 1
M = L[1:4]


copy.copy(x)
레퍼런스만 카피 = 슬라이싱 기능

copy.deepcopy(x)
객체를 통채로 복사

str 유효자리수 크기
repr 유효자리수 크기 , 문자형 역변환이가능하게, 어떠한 오브젝트인지 표현한다.

>>> str(0.2)
'0.2'
>>> repr(0.2)
'0.20000000000000001'
>>> '0.20000000000000001'
'0.20000000000000001'

소수 : 1과 자기자신으로 밖에 나누어지않는수

>>> while a < 4:
 print a
 a = a + 1

num = [1, 2, 3, 4, 5, 6, 7, 8, 9]

if ((i % 2) != 0) i + "는 소수가 아니다" break;  // 소수가 아니다.
 else print i + "는 소수다"   //소수다


while a < num :

for i in num:
 
단계별 코딩.!!

소수 인지 판별하는 함수부터 만들고 For문을 돌리기



4. 6일 파일
>>> f = file('t.txt')
>>> f.read()
'line\nline2\none two three '
>>> f.read()
''
>>> f = file('t.txt')
>>> f.read(10)
'line\nline2'
>>> f.read(10)
'\none two t'
>>> f.read(10)
'hree '
>>> f.read(10)
''
>>> f.read(10)
''
>>> f = file('t.txt')
>>> f.readline()
'line\n'
>>> f.readline()
'line2\n'
>>> f.readline()
'one two three '
>>> f.readline()
''
>>> f.readline()
''
>>> f.readlines()
[]
>>> f = file('.txt')

Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    f = file('.txt')
IOError: [Errno 2] No such file or directory: '.txt'
>>> f = file('.txt')

Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    f = file('.txt')
IOError: [Errno 2] No such file or directory: '.txt'
>>> f = file('t.txt')
>>> f.readlines()
['line\n', 'line2\n', 'one two three ']
>>>
>>> f = file('t.txt')

-- 이 방법 사용 할것--
>>> for line in file('t.txt'):
 print line,

 
line
line2
one two three

f = file('python.exe', 'rb') # exe, wav 파일을 읽을때 사용 바이너리 오픈

윈도우 : \n,\r / \r
리눅스 : 바이너리, 텍스트 파일 차이없다
1310 \r\b 13+10 = 1바이트

 f.seek(0, 2) 맨 끝위치로 가라  
 f.seek(-5, 2) 맨 끝에서 5번째  왼쪽 - /  오른쪽 +

 f.seek(-5, 1) 맨 끝에서 5번째  왼쪽 - /  오른쪽 + 

"2 끝위치에서"
"1 현재 위치서"
>>> m
<md5 HASH object @ 011ECA00>
>>> m.update("1234")
>>> m.hexdigest()
'81dc9bdb52d04dc20036dbd8313ed055'
>>> m.hexdigest()
'81dc9bdb52d04dc20036dbd8313ed055'
>>> m.digest()

HW
어느 페이지가 몇번이나 접속을 했는지?  어디서에서 횟수 접수했는지. 일괄 통계
몇군대에서 접속했는지, 총~ 통계내기
라인단위 읽기.. 문자열 분석 부분 부분 잘르기..

4월 8일

객체를 파일에 저장하고 불러온다.

pickle.dump(D, file('save.txt','w'))
D = pickle.load(file('save.txt'))
pickle.dump(D, file('save.txt','w'), protocol=1) # 바이너리로 저장한다.

pack('hhl',1,2,3)
'\x01\x00\x02\x00\x03\x00\x00\x00'

'\x01\x00\x02\x00\x00\x00'
>>> pack('>hl',1,2) #순서에 따라 값읽기
'\x00\x01\x00\x00\x00\x02'

>>> pack('<hl',1,2) #순서에 따라 값읽기
'\x01\x00\x02\x00\x00\x00'

>>> pack('!hl',1,2)  # 통신할때 byte word
'\x00\x01\x00\x00\x00\x02'

파일에서 내가 원하는 문자열을 찾아준다. grep

모든 c파일에 av_regis가 있는것을 구해라

grep  -n av_regis *.c

L , N 옵션

import glob
import sys

search = sys.argv[1]
fpattern = sys.argv[2]
cnt = 0
for fname in glob.glob(fpattern) :
    cnt = 0
    for line in file(fname) :
        cnt = cnt + 1
        if line.find(search) >= 0 :
            print "%10s %4d %s" % (fname, cnt, line)


import glob
import sys

search = sys.argv[1]
fpattern = sys.argv[2]

print sys.argv[0], search, fpattern

4월 13일

pass 아무일도 안 하고 자리만 채운다.

local -> global -> built-in 찾기
함수안/ 함수밖 /

h = a + 10  어디서(h,b) 치환되는가.

변수선언시 이름 을 어떻게 찾아가는가

>>> def f():
 global g 이함수내에서는 모두  global
 a = g
 g = 20
 return a
 
dir(__builtins__)

>> def incr(a,step=1):  # step 디폴드값 1이다.

 return a + step
 
>>> def f(width, height, **kw):     사전

 print width, height
 print kw


>>> adrs_unicode = unicode(adres,'euc-kr')

Traceback (most recent call last):
  File "<pyshell#258>", line 1, in <module>
    adrs_unicode = unicode(adres,'euc-kr')
NameError: name 'adres' is not defined
>>> adrs_unicode = unicode(adrs,'euc-kr')
>>> adrs_utf8 = adrs_unicode.encode('utf-8')
>>> urllib.quote(adrs_utf8)
'%EC%A0%95%EB%A6%894%EB%8F%99%20402-72'

query_url = query_url_temp % urllib.quote(adrs_utf8)
>>> query_rul

>>> google_url = "http://maps.google.com/maps?f=q&hl=en&ie=UTF8&z=14&ll=37.609294,127.010552&t=k&om=1"
>>> import os
>>> os.startfile(google_url)
>>>

4월 27일

함수형언어
Quicksort in Haskell

1. 루프 x, 재귀함수 o
2. 함수를 인수로 받는다.

 y = map(lambda a:a*a, X)
엑셀파일을 CSV로 파일로 저장한다. OOO,OO,OOO 이런식
,로 짜르기 조심.
>>> reader = csv.reader(file('samsung1.csv'))
>>> header = reader.next()
L = [map(int, row) for row in reader]
['12345', 'asdf2', '5432a', 'abdef']
>>> L = [map(int, filter(lambda t:t.isdigit(),row)) for row in L2]
cvs2rec cvs 데이터를 필드명으로 파싱 가능


반응형
Posted by 170간지 170간지

댓글을 달아 주세요