More actions
imported>skywave No edit summary |
imported>skywave No edit summary |
||
| Line 10: | Line 10: | ||
=== Using the Python Interpreter === | === Using the Python Interpreter === | ||
=== An Informal Introduction to Python === | === An Informal Introduction to Python === | ||
==== Using Python as a Calculator ==== | ==== Using Python as a Calculator ==== | ||
===== Numbers ===== | ===== Numbers ===== | ||
* python은 계산기처럼 쓸 수 있음. | |||
** +, -, *, /, (), **, //, %가 존재. | |||
** //연산자는 몫을 리턴. | |||
** | |||
x ** y | |||
연산자는 x의 y승 == {{{pow(x, y}}}. | |||
** -x = x negated | |||
** int / int = float이니 조심. | |||
* | |||
_ | |||
: 마지막에 출력된 값을 의미. | |||
* 복소수도 내장으로 지원함: | |||
complex(real, imaginary | |||
* | |||
divmod(x, y) | |||
=> {{{(x // y, x % y)}}} 이런 형태로 출력당함 | |||
* | |||
round(x, y) | |||
: 숫자x에서 소수점 자리수를 y개수만 남김. | |||
===== Strings ===== | ===== Strings ===== | ||
* String은 ‘...’ 혹은 “...”사용. 차이는 없음. | |||
** 다른 언어와 같이 | |||
\ | |||
를 이용해 특수 문자를 입력 가능. | |||
** | |||
\t | |||
, {{{\n}}}, {{{\’}}} 등. | |||
* 중간에 있는’를 무효화 시키기 위해서 \를 붙이거나 큰따옴표를 사용 | |||
** 단지 “...” 안의 ‘ 는 허용. ‘...’ 안의 “ 허용. escape 문자 필요없음 | |||
* ’r’을 붙이면 | |||
\ | |||
를 특수문자가 아닌 일반 문자로 표현. | |||
>>> print('C:\some\name') # \n을 개행문자로 인식 | |||
C:\some | |||
ame | |||
>>> print(r'C:\some\name') # r을 앞에 붙인다 | |||
C:\some\name | |||
* String을 | |||
+ | |||
로 더하고, {{{*}}}로 반복할 수 있다. | |||
* | |||
“””....””” | |||
여러 줄을 허용하는 문자열 | |||
* | |||
“some” “thing” | |||
== {{{“something”}}} | |||
** 오직 literals 끼리 적용된다. | |||
** 변수, 수식에서 적용되지 않음 | |||
** 긴 string을 여러 줄에 걸쳐서 쓸 때 사용하면 유용 | |||
>>> prefix = 'Py' | |||
>>> prefix 'thon' | |||
SyntaxError: invalid syntax | |||
>>> ('un' * 3) 'ium' | |||
SyntaxError: invalid syntax | |||
* index를 이용해서 각 chr에 접근 가능하며, 음수도 가능. | |||
+---+---+---+---+---+---+ | |||
| P | y | t | h | o | n | | |||
+---+---+---+---+---+---+ | |||
0 1 2 3 4 5 6 | |||
-6 -5 -4 -3 -2 -1 | |||
* slicing: | |||
[start:end:step] | |||
. start는 포함되며, end는 포함되지 않고, 각 항목은 생략 가능. | |||
word = 'Python' | |||
>>> word[0:2] | |||
'Py' | |||
>>> word[:2] + word[2:] | |||
'Python' | |||
>>> word[:2] | |||
'Py' | |||
>>> word[-2:] | |||
'on' | |||
>>> word[:] | |||
‘Python’ | |||
* | |||
len(s) | |||
: string과 기타 등등의 원소의 개수를 반환 | |||
===== Lists ===== | ===== Lists ===== | ||
* Python이 가지는 여러가지 자료를 묶는 방식 중 가장 가변적인 형태 | |||
* []로 묶어서 표현. | |||
>>> squares = [1, 4, 9, 16, 25] | |||
>>> squares | |||
[1, 4, 9, 16, 25] | |||
* [n]으로 index n에 해당하는 데이터에 접근 | |||
* + 로 복수의 list를 append할 수 있다. | |||
* | |||
len() | |||
: list와 기타 등등의 원소의 개수를 반환. | |||
* Slicing | |||
** String이랑 동일하게 적용. | |||
>>> n = [1, 2, 3] | |||
>>> x = [a, n] | |||
>>> x | |||
[['a', 'b', 'c'], [1, 2, 3]] | |||
>>> x[0] | |||
['a', 'b', 'c'] | |||
>>> x[0][1] | |||
'b' | |||
==== First Steps Towards Programming ==== | ==== First Steps Towards Programming ==== | ||
* | |||
a, b = b, a+b | |||
: 우변을 연산하고 좌변의 대응하는 위치에 맞추어서 대입한다. | |||
* Indentation 잘못하면 안 돼요. | |||
=== More Control Flow Tools === | === More Control Flow Tools === | ||
=== Data Structures === | === Data Structures === | ||
Revision as of 09:16, 23 May 2014
개요
- [1]의 내용을 열파참/금요일에서 정리.
- 번역이 아닌 정리다보니, 내용의 차이가 있을 수 있음... 이 아니라 있음.
- 스터디시만 사용하는 독스: http://goo.gl/11ZcFB
내용
Whetting Your Appetite
Using the Python Interpreter
An Informal Introduction to Python
Using Python as a Calculator
Numbers
- python은 계산기처럼 쓸 수 있음.
- +, -, *, /, (), **, //, %가 존재.
- //연산자는 몫을 리턴.
x ** y
연산자는 x의 y승 == {{{pow(x, y}}}.
- -x = x negated
- int / int = float이니 조심.
_
- 마지막에 출력된 값을 의미.
- 복소수도 내장으로 지원함:
complex(real, imaginary
divmod(x, y)
=> {{{(x // y, x % y)}}} 이런 형태로 출력당함
round(x, y)
- 숫자x에서 소수점 자리수를 y개수만 남김.
Strings
- String은 ‘...’ 혹은 “...”사용. 차이는 없음.
- 다른 언어와 같이
\
를 이용해 특수 문자를 입력 가능.
\t
, {{{\n}}}, {{{\’}}} 등.
- 중간에 있는’를 무효화 시키기 위해서 \를 붙이거나 큰따옴표를 사용
- 단지 “...” 안의 ‘ 는 허용. ‘...’ 안의 “ 허용. escape 문자 필요없음
- ’r’을 붙이면
\
를 특수문자가 아닌 일반 문자로 표현.
>>> print('C:\some\name') # \n을 개행문자로 인식
C:\some
ame
>>> print(r'C:\some\name') # r을 앞에 붙인다
C:\some\name
- String을
+
로 더하고, {{{*}}}로 반복할 수 있다.
“””....”””
여러 줄을 허용하는 문자열
“some” “thing”
== {{{“something”}}}
- 오직 literals 끼리 적용된다.
- 변수, 수식에서 적용되지 않음
- 긴 string을 여러 줄에 걸쳐서 쓸 때 사용하면 유용
>>> prefix = 'Py'
>>> prefix 'thon'
SyntaxError: invalid syntax
>>> ('un' * 3) 'ium'
SyntaxError: invalid syntax
- index를 이용해서 각 chr에 접근 가능하며, 음수도 가능.
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
- slicing:
[start:end:step]
. start는 포함되며, end는 포함되지 않고, 각 항목은 생략 가능.
word = 'Python' >>> word[0:2] 'Py' >>> word[:2] + word[2:] 'Python' >>> word[:2] 'Py' >>> word[-2:] 'on' >>> word[:] ‘Python’
len(s)
- string과 기타 등등의 원소의 개수를 반환
Lists
- Python이 가지는 여러가지 자료를 묶는 방식 중 가장 가변적인 형태
- []로 묶어서 표현.
>>> squares = [1, 4, 9, 16, 25] >>> squares [1, 4, 9, 16, 25]
- [n]으로 index n에 해당하는 데이터에 접근
- + 로 복수의 list를 append할 수 있다.
len()
- list와 기타 등등의 원소의 개수를 반환.
- Slicing
- String이랑 동일하게 적용.
>>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b'
First Steps Towards Programming
a, b = b, a+b
- 우변을 연산하고 좌변의 대응하는 위치에 맞추어서 대입한다.
- Indentation 잘못하면 안 돼요.
More Control Flow Tools
Data Structures
Modules
Input and Output
Fancier Output Formatting
str()
vs {{{repr()}}}
str()
- 사람이 읽기 위한 용도로 string으로 변환
repr()
- {{{eval()}}}을 사용하기 위한 용도로 string으로 변환
>>> s = 'Hello, world.' >>> str(s) 'Hello, world.' >>> repr(s) "'Hello, world.'"
str.format()
method를 이용하면 노가다를 뛰지 않고도 깔끔하게 출력이 가능
>>> for x in range(1, 3):
... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
1 1 1
2 4 8
3 9 27
>>> print('The story of {1}, {0}, and {other}.'.format('Manfred','Bill',
other='Georg'))
The story of Bill, Manfred, and Georg.
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
... 'Dcab: {0[Dcab]:d}'.format(table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678
vars()
를 이용하면 local variables를 담은 dictionary를 얻을 수 있음. 위의 예제와 쓰면 궁합이 좋음.
str.rjust(n)
, {{{str.ljust(n)}}}, {{{str.center(n)}}}: n사이즈에 맞게 정렬된 string을 반환. str이 이미 n보다 길면 무시.
- 이와 같은 문제를 해결하기 위해
str.ljust(n)[:n]
같은 짓을 가능.
str.zfill(n)
- n사이즈에 맞게 0이 삽입된 string을 반환.
Old string formatting
%typeIndicator
- 구식이다.
print(‘The value of PI is %5.3f.’ % math.pi)
Reading and Writing Files
open(filename, mode)
- 파일 열기
- mode
- ‘r’: 읽기 (기본값)
- ‘w’: 쓰기
- ‘a’: 이어쓰기
- ‘r+’,’w+’: 쓰고 읽기
- ‘b’: 바이너리로 열기 (없으면 텍스트로 읽음)
- binary vs text
- text mode에서는 line ending을 플랫폼에 맞는 형식으로 변환.
- 따라서 text가 아닌 파일을 text 모드로 열면 파일이 변형될 수 있음.
Methods of File Objects
read(size)
- size만큼 파일을 읽는다. size가 지정되지 않거나 음수면 메모리가 허용하는 만큼 읽음.
- 끝에 도달하면 빈 string인 ‘’를 반환
readline()
/ {{{readlines()}}}
- 한 줄 읽어오는 메소드/한줄씩 묶어서 리스트로 제공하는 메소드
- list(file)로도 readlines와 같은 효과
- 다음과 같이 for문을 이용할 수도 있음:
for line in f: print(line, end=’’)
write(string)
- 파일에 string을 씁니다. string만 가능하니 다른 것을 쓰고 싶다면 str(object)로 변환 후 이용.
seek(index,from)
- from
- 0 : 파일의 시작점을 기준으로
- 1 : 현재 보고 있는 바이트를 기준으로(tell()로 보이는 그거)
- 2 : 파일의 마지막 바이트를 기준으로
tell()
- 파일 내의 현재 지정하고 있는 바이트 위치를 알려줌
close()
- 파일을 닫음. 닫고 나서 해당 파일을 쓰려고 하면 오류가 남.
closed
- NOT A METHOD
- 닫혔는지 여부를 boolean으로 알려줌
Saving structured data with json
- json = JavaScript Object Notation
import json
json.load(json file)
도 파일 읽기 시스템. 읽고 난 뒤에는 마지막으로 간다. 고로 여러번 읽을 수 없다.
json.dumps(obj)
- obj를 json 형식으로 전환
json.dump(obj, file)
- file에 쓰기