만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다.
# tar -xvzf Python-X.Y.Z.tgz
# cd Python-X.Y.Z
# ./configure --help # ./configure
# make
# su - # make install 또는 # sudo make install
환경변수(Environment Variable) | 설명(Description) |
PYTHONPATH | 파이썬 인터프리터에게 프로그램으로 가져온 모듈 파일의 위치를 알려줍니다. 파이썬 소스 라이브러리 디렉토리와 파이썬 소스 코드가 들어있는 디렉토리를 포함해야합니다. PYTHONPATH는 때때로 Python 설치 프로그램에 의해 미리 설정됩니다. |
PYTHONSTARTUP | 파이썬 소스 코드를 포함하는 초기화 파일의 경로를 포함합니다. 인터프리터를 시작할 때마다 실행됩니다. Unix에서는 .pythonrc.py라는 이름으로 유틸리티를로드하거나 PYTHONPATH를 수정하는 명령이 들어 있습니다. |
PYTHONCASEOK | Windows에서 Python이 import 문에서 대소 문자를 구분하지 않는 첫 번째 일치를 찾도록 지시하는 데 사용됩니다. 이 변수를 활성화하려면 값을 설정하십시오. |
PYTHONHOME | 대체 모듈 검색 경로입니다. 일반적으로 PYTHONSTARTUP 또는 PYTHONPATH 디렉토리에 포함되어 스위칭 모듈 라이브러리를 쉽게 만들 수 있습니다. |
옵션(Option) | 설명(Description) |
아무 인자 없이 실행하는 경우 | 기본 대화형 인터프리터로 실행됩니다. |
-d | 디버그 출력을 제공합니다. |
-O | 최적화 된 바이트 코드 (.pyo 파일을 생성)를 생성합니다. |
-S | 시작시 Python 경로를 찾기 위해 "import site"를 실행하지 않도록 합니다. |
-v | 자세한 출력 (import 문의 세부 추적시 유용) |
-c <cmd> | cmd 문자열로 전송 된 Python script를 실행합니다. |
<file> | 주어진 파일에서 Python script를 실행합니다. |
$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> quit() $
$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.exit() $
$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1+2 3 >>> 3/2.4 1.25 >>> 3*9 27 >>> a=1 >>> b=2 >>> c=a+b >>> d="Python test" >>> e=2+3j # 복소수를 표현하는 j객체 사용 >>> f=3 >>> a+b 3 >>> c 3 >>> d 'Python test' >>> e*f # 복소수 연산 결과 (6+9j) >>> print("Hello world : %d + %d = %d (%s)"%(a,b,c,d)) Hello world : 1 + 2 = 3 (Python test) >>> if (a+b) > 1: ... print("a is greater than 1") # print 앞에 들여쓰기를 위해서 공백(space 또는 tab) 문자를 입력해야 합니다. ... a is greater than 1 >>> for v in [1,2,3]: ... print("loop in %d"%(v)) # for 반복문 테스트 - 변수 v 에 차례대로 대입되어 수행 ... loop in 1 loop in 2 loop in 3 >>> i=0 >>> while i < 3: ... i = i + 1 ... print("while loop in %d"%(i)) ... while loop in 1 while loop in 2 while loop in 3 >>> def mysum(a,b): ... return a + b ... >>> print("mysum func call result : %d"%(mysum(3,4))) mysum func call result : 7 >>> quit() $
"""
를 양쪽에 두고 그 사이도 주석문입니다.
'''
를 양쪽에 두고 그 사이도 주석문입니다.
#!/usr/bin/python # -*- coding: UTF-8 -*- # vim: set fileencoding=UTF-8 : """ 사이의 내용은 모두 주석문입니다. """ print("Hello world") # print 구문은 인자로 주어진 문자열을 출력해줍니다. ''' 이것도 주석문입니다. '''
$ /usr/bin/python hello.py
$ ./hello.py
'\'
을 입력 후 새로운 줄에서 이어서 작성) 을 통해서 여러줄에 걸쳐서 구분을 작성할 수 있습니다.
>>> a = 1 + \ ... 2 + \ ... 3 >>> a 6 >>>
[]
, {
}, ()
으로 둘러 쌓여있는 구문은 Escape sequence 구문이 필요없이 줄바꿈 하여 작성 가능합니다.
>>> a = ['1', 'two', ... '3', 'four', ... 'five' ... ] >>> a ['1', 'two', '3', 'four', 'five'] >>>
>>> import sys; x = 'foo'; sys.stdout.write(x + '\n')
연산자(Operator) | 설명(Description) |
** | 지수 제곱 |
~, +, ,- | 단항 연산 |
*, /, %, // | 산술 연산 곱하기, 나누기, 나머지, 몫 |
+, - | 산술 연산 덧셈, 뺄셈 |
>>, << | 비트 쉬프트 |
& | 비트논리 AND |
^, } | 비트논리 XOR, OR |
<=, <, >, >= | 비교 연산 |
<>, ==, != | 평등 연산 |
=, %=, /=, //=, -=, +=, *=, **= | 할당 연산 |
is, is not | 식별 연산 |
in, not in | 멤버 연산 |
not, or, and | 논리 연산 |
>>> import sys >>> sys.version '2.7.6 (default, Oct 26 2016, 20:30:19) \n[GCC 4.8.4]' # 2.X 의 경우 '3.4.3 (default, Nov 17 2016, 01:08:31) \n[GCC 4.8.4]' # 3.X 의 경우 >>> sys.version_info sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0) # 2.X 의 경우 sys.version_info(major=3, minor=4, micro=3, releaselevel='final', serial=0) # 3.X 의 경우
>>> print "<문자열>" # 2.7 이하에서만 사용 가능 (3.X 이상에서는 오류) >>> print "<문자열>", # 줄바꿈 제거 기능으로 2.7 이하에서만 사용 가능 (3.X 이상에서는 오류) >>> print("<문자열>") # 2.7 이상부터만 사용 가능 (2.7 미만에서는 오류) >>> print("<문자열>",end="<줄바꿈 대체문자열>") # 줄바꿈 제거 또는 대체가 가능한 기능이며 3.X 이상부터만 사용 가능 (2.X 이하에서는 오류)
>>> items=["Hello", "World", "Testing"] >>> for temp in items: ... print "%s"%temp,"_", # 뒤에 콤마(',')로 print 구문이 끝나면 줄바꿈이 일어나지 않습니다. (Python 2.X 방식이며 3.X에서는 잘못된 구문으로 오류가 발생합니다.) ... Hello _ World _ Testing _ >>> items=["Hello", "World", "Testing"] >>> for temp in items: ... print("%s"%temp,end="_") # 마지막 인자로 end="<줄바꿈 대신에 대체될 문자 또는 빈 공백>" 을 넣어서 줄바꿈이 일어나지 않게 할 수 있습니다. (Python 3.X 방식이며 2.X에서는 잘못된 구문으로 오류가 발생합니다.) ... Hello_World_Testing_>>> # 줄바꿈이 "_"로 대체되어 프롬프트가 출력문자열 뒤에 표시되었습니다. (Python 3.X 에서는...) >>>
>>> type(None) <class 'NoneType'> >>>
종류(Type) | 객체의 종류 | 설명(Description) | 문법 예(Syntax example) |
bool | 불변객체 | 참/거짓 값(Boolean value) | True, False |
bytearray | 가변객체 | 순차 바이트열(Sequence of bytes) | bytearray(b'Some ASCII') , bytearray(b"Some ASCII") , bytearray([119, 105, 107, 105]) |
bytes | 불변객체 | 순차 바이트열(Sequence of bytes) | b'Some ASCII' , b"Some ASCII" , bytes([119, 105, 107, 105]) |
complex | 불변객체 | 복소수 (실수와 허수) | 3+2.7j |
dict | 가변객체 | 연관 배열의 키와 값 쌍 | {'key1': 1.0, 3: False } |
ellipsis | - | NumPy 배열에서 색인으로 사용되는 줄임표 자리 표시 자 | ... |
float | 불변객체 | 부동소수점 수 (시스템 정의 정밀도) | 3.1415927 |
frozenset | 불변객체 | 순서가없는 집합이며 중복 된 내용이 없고 해시 가능한 경우 혼합 유형을 포함 할 수 있음 | frozenset([4.0, 'string', True]) |
int | 불변객체 | 정수로서 크기는 무제한 | 42 |
list | 가변객체 | 혼합 형태를 포함가능 | [4.0, 'string', True] |
set | 가변객체 | 순서가없는 집합이며 중복 된 내용이 없고 해시 가능한 경우 혼합 유형을 포함 할 수 있음 | {4.0, 'string', True } |
str | 불변객체 | 일련의 유니코드(Unicode) 코드포인트(codepoints) | 'MyString', "MyString" |
tuple | 불변객체 | 혼합 형태를 포함가능 | (4.0, 'string', True) |
항목 | 예 | 비고 |
정수(Integer) | 123, -345, 0 | 양의 정수, 음의 정수, 0(Zero) |
실수(Floating-point) | 123.45, -1234.5, 3.4e10, 4.24E10, 4.24E-10 | 컴퓨터식 지수 표현 방식, e 또는 E 둘다 사용가능, E10은 10의 10승을 의미 |
복소수(Complex-number) | 1+2j, -3j | j 또는 J 둘다 사용가능, 복소수의 실수부-허수부-켤레복소수-절대값 등을 다룰 수 있습니다. |
8진수(Octal) | 0o34, 0o25, 0o177 | 숫자 0 다음에 알파벳 O(소문자 또는 대문자 사용가능)으로 시작 |
16진수(Hexa-decimal) | 0x2A, 0xFF, 0xab, 0xABC | 숫자 0 다음에 알파벳 X(소문자 또는 대문자 사용가능)으로 시작 |
"
), 작은따옴표('
), 큰따옴표3개연속("""
), 작은따옴표3개연속('''
) 중에서 하나를 선택하여 양쪽으로 둘러싼 사이의 내용이 문자열입니다.
"Hello world" |
'Hello world' |
"""Hello world""" |
'''Hello world''' |
"Python's Hello world" |
'Python quite "Hello world"' |
"""Python string triple '''""" |
'''Python string triple """''' |
'\'
)를 사용하여 Escape sequence 처리할 수 있습니다.
'Python\'s Hello world' |
"Python quite "Hello world"" |
'''Python string triple \'\'\'''' |
'''Python string triple ''\'''' |
"""Python string triple """""" |
"""Python string triple """""" |
코드 | 설명 |
\\ | 역슬래시(\ ) 그 자체 |
\n | 줄 바꿈 문자(New line, 다음줄의 첫 컬럼으로 이동) |
\t | 탭(Tab) 문자 |
\r | 캐리지 리턴 문자(Carriage return, 커서를 현재 줄의 첫 컬럼으로 이동) |
\f | 폼 피드(Form feed, 커서를 다음줄의 현 컬럼으로 이동) |
\a | 벨 소리(PC speaker에 beep음을 울리게 함) |
\s | 공백(Space) 문자 |
\b | 백 스페이스 문자 |
\v | 수직탭(Vertical tab) 문자 |
\cx | Ctrl + X |
\C-x | Ctrl + X |
\M-\C-x | Meta + Ctrl + X |
\e | Escape 문자 |
\000 또는 \x00 | Nul terminator 문자 |
\aaa 또는 \xbb | ASCII code 문자 (aaa 는 8진수 code, bb 는 16진수 code) |
\<문자> | 그 자체 (단, 위 Escape code가 아닌 경우만 <문자> 그 자체로 처리될 수 있음) |
>>> head="Hello" >>> tail="world" >>> head + " " + tail 'Hello world' >>>
>>> a="1" >>> b=2 >>> a+b Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'int' object to str implicitly >>> a+str(b) '12' >>> int(a)+b 3 >>>
>>> head_char="=+" >>> head_line=head_char*50 >>> print(head_line) =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ >>> i = 0 >>> while i < 10: ... i = i + 1 ... print(head_char * i) ... =+ =+=+ =+=+=+ =+=+=+=+ =+=+=+=+=+ =+=+=+=+=+=+ =+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+ >>>
Method | 설명(Description) |
capitalize() | 문자열의 첫 글자를 대문자로 표시 |
center(width, fillchar) | 총 너비 열의 가운데에 원래 문자열이있는 채워진 문자열을 반환 |
count(str, beg= 0,end=len(string)) | 시작 인덱스 beg와 끝 인덱스 종료가 주어진 경우 문자열 또는 문자열의 하위 문자열에서 str이 몇 번 발생하는지 계산 |
decode(encoding='UTF-8',errors='strict') | 인코딩 용으로 등록 된 코덱을 사용하여 문자열을 디코딩 (인코딩 기본값은 기본 문자열 인코딩) |
encode(encoding='UTF-8',errors='strict') | 문자열의 인코딩 된 문자열 버전을 반환 (오류시 기본값은 'ignore'또는 'replace'로 오류가 표시되지 않는 한 ValueError를 발생) |
endswith(suffix, beg=0, end=len(string)) | 문자열의 인코딩 된 버전이 반환 (오류 메시지가 'ignore'또는 'replace'오류가 표시되면 ValueError가 발생) |
expandtabs(tabsize=8) | 문자열의 탭을 여러 공백으로 확장 (탭 크기가 제공되지 않으면 탭당 8 공백이 기본값) |
find(str, beg=0 end=len(string)) | 문자열 시작 또는 끝 인덱스 지정이 주어진 경우 str이 문자열에서 또는 문자열의 부분 문자열에서 발생하는지 확인 (그렇지 않으면 -1을 반환) |
index(str, beg=0, end=len(string)) | find() 와 동일하지만, str가 발견되지 않으면 예외가 발생 |
isalnum() | 문자열이 1 문자 이상이고 모든 문자가 영숫자의 경우는 true, 그렇지 않은 경우는 false |
isalpha() | 문자열이 1 문자 이상이고 모든 문자가 영문자이면 true를 반환하고 그렇지 않으면 false |
isdigit() | 문자열에 숫자 만 들어 있으면 true를 반환하고 그렇지 않으면 false |
islower() | 문자열에 적어도 하나의 대소 문자가 있고 대소 문자가 모두 소문자이면 true를 반환하고 그렇지 않으면 false |
isnumeric() | 유니 코드 문자열에 숫자 문자 만 포함되어 있으면 true를 반환하고 그렇지 않으면 false |
isspace() | 문자열에 공백 문자 만 포함되어 있으면 true를 반환하고 그렇지 않으면 false |
istitle() | 문자열이 적절히 "titlecased"이면 true를 반환하고 그렇지 않으면 false |
isupper() | 문자열에 적어도 하나의 대소 문자가 있고 대소 문자가 모두 대문자이면 true를 반환하고 그렇지 않으면 false |
join(seq) | 문자열 seq에있는 요소의 문자열 표현을 구분 기호 문자열과 병합(연결) |
len(string) | 문자열의 길이를 반환 |
ljust(width[, fillchar]) | 총 너비 열에 왼쪽 정렬 된 원래 문자열을 사용하여 공백으로 채워진 문자열을 반환 |
lower() | 문자열의 모든 대문자를 소문자로 변환 |
lstrip() | 문자열의 앞에있는 공백을 모두 제거 |
maketrans() | translate 함수에서 사용할 변환 테이블을 반환 |
max(str) | 문자열 str에서 최대 알파벳 문자를 반환 |
min(str) | 문자열 str에서 최소 알파벳 문자를 반환 |
replace(old, new [, max]) | 문자열에서 old의 모든 항목을 새 항목 또는 최대 항목으로 교체 |
rfind(str, beg=0,end=len(string)) | find() 와 동일하지만 문자열에서 뒤로 검색 |
rindex( str, beg=0, end=len(string)) | index() 와 같지만 문자열에서 뒤로 검색 |
rjust(width,[, fillchar]) | 총 너비 열로 오른쪽 정렬 된 원래 문자열로 공백으로 채워진 문자열을 반환 |
rstrip() | 문자열의 뒤에있는 공백을 모두 제거 |
split(str="", num=string.count(str)) | 구분 기호 str (제공되지 않은 경우 공백)에 따라 문자열을 분할하고 하위 문자열 목록을 반환 (주어진 경우 최대 num 하위 문자열로 분할) |
splitlines( num=string.count('\n')) | 문자열을 모두 (또는 num) 줄바꿈 문자기준으로 분할하고 줄바꿈 문자는 제거 된 각 행의 목록을 반환 |
startswith(str, beg=0,end=len(string)) | 문자열의 문자열 또는 부분 문자열(시작 색인 beg 및 종료 색인 끝이 주어진 경우)이 부분 문자열 str로 시작하는지 확인하여 있으면 true를 반환하고 그렇지 않으면 false를 반환 |
strip([chars]) | 문자열에서 앞/뒤 공백을 제거 (문자열에 대해 lstrip() 및 rstrip() 을 수행) |
swapcase() | 문자열의 모든 대/소문자를 반전 |
title() | 문자열의 "제목"버전을 반환 (즉, 모든 단어는 대문자로 시작하고 나머지는 소문자) |
translate(table, deletechars="") | 문자열을 변환 테이블 str (256 문자)에 따라 변환하고 deletechars의 문자를 제거합니다. |
upper() | 문자열의 소문자를 대문자로 변환 |
zfill(width) | 총 너비 문자에 0으로 왼쪽 패딩 된 원래 문자열을 반환 |
isdecimal() | 유니 코드 문자열에 숫자 문자 만 들어 있으면 true를 반환하고 그렇지 않으면 false를 반환 |
>>> a="Hello world" >>> len(a) 11 >>>
>>> a="Hello world" >>> a[3] 'l' >>> a[0] 'H' >>> a[10] 'd' >>> a[11] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range >>> a[-1] 'd' >>> a[len(a)-1] 'd' >>> a[-11] 'H' >>> a[-12] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range >>> a[-0] 'H' >>>
시작 <= i < 끝
, 시작이 생략되면 0으로 간주, 끝이 생략되면 문자열의 길이인 len(문자열)
로 간주)
>>> a="Hello world" # 인덱스 번호는 0 ~ 10, 총 11글자 >>> a[0:len(a)] 'Hello world' >>> a[0:5] # 인덱스 번호 0 부터 5-1(4) 까지 총 5글자를 뽑아냄 'Hello' >>> a[5:] # 인덱스 번호 5부터 끝까지(11-1) 총 6글자를 뽑아냄 ' world' >>> a[:5] # 첫 인덱스 0부터 5-1(4) 까지 총 5글자를 뽑아냄 'Hello' >>> a[5:-1] # 인덱스 번호 5부터 -1-1(-2=10-1=9) 까지 총 5글자를 뽑아냄 ' worl'
'%d'
, 문자열은 '%s'
로 대응합니다. 문자열의 뒤에 '%'
기호 다음에 대응하는 인자를 넣어주며 2개 이상인 경우 괄호로 묶고 콤마(','
)로 구분하여 넣어줍니다. (참고: String Formatting Operator(https://www.tutorialspoint.com/python/python_strings.htm), C언어의 printf와 거의 유사)
코드 | 설명 |
%c | 문자 1개(Character) |
%s | 문자열(String) |
%i | 부호 있는 정수(Integer) |
%d | 부호 있는 정수(Integer) |
%u | 부호 없는 정수(Integer) |
%o | 8진수(Octal) |
%x | 16진수(Hexa-decimal) 소문자 |
%X | 16진수(Hexa-decimal) 대문자 |
%e | 지수(Exponential) 소문자 |
%E | 지수(Exponential) 대문자 |
%f | 부동소수점(Floating-point) 수 |
%g | %f 와 %e 중에서 짧은 표기 |
%G | %f 와 %E 중에서 짧은 표기 |
%% | Literal 문자 % 자체 |
>>> number=3 >>> string="three" >>> "I like number is %d"%number # '%d'는 정수를 표시합니다. number는 정수형 이어야 합니다. 'I like number is 3' >>> "I like number is %s"%string # '%s'는 문자열을 표시합니다. %string은 어떤 형태이든 알아서 문자열형으로 변환하여 표시해줍니다. 'I like number is three' >>> "I like number is %d(%s)"%(number,string) # 여러개의 포매팅 인자가 사용되는 경우 괄호로 감싸줍니다. 'I like number is 3(three)' >>> "I like char is %c"%string[0] # '%c'는 문자 1개(character)를 표시합니다. 'I like char is t' >>> "I like char is %f"%number # '%f'는 부동소수점(floating-point)로 표시합니다. 'I like char is 3.000000' >>> "I like number is %o(octal)"%127 # '%x'는 8진수(octal)로 표시합니다. 'I like number is 177(octal)' >>> "I like number is %x(hexa-decimal)"%127 # '%x'는 16진수(hexa-decimal)로 표시합니다. 'I like number is 7f(hexa-decimal)' >>> "%d%% percent"%100 # '%%' 는 '%' 문자 그 자체를 의미합니다. '100% percent' >>> "%10s"%"Hello" # 10자리를 확보하고 오른쪽 정렬합니다. ' Hello' >>> "%-10s"%"Hello" # 10자리를 확보하고 왼쪽 정렬합니다. 'Hello ' >>> "%.4f"%3.1234567678 # 소숫점 이하 4자리까지만 표시 '3.1235' >>> "%0.4f"%3.1234567678 # 소숫점 이하 4자리까지만 표시 '3.1235' >>> "%10.4f"%3.1234567678 # 소숫점 이하 4자리까지만 표시하고 전체 10자리를 확보하며 오른쪽 정렬 표시 ' 3.1235' >>>
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* arg_name ::= [identifier | integer] attribute_name ::= identifier element_index ::= integer | index_string index_string ::= <any source character except "]"> + conversion ::= "r" | "s" | "a" format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] fill ::= <any character> align ::= "<" | ">" | "=" | "^" "<" : 왼쪽 정렬 ">" : 오른쪽 정렬 "=" : 부호(sign)와 숫자(digits) 사이에 패딩 "^" : 가운데 정렬 sign ::= "+" | "-" | " " "+" : 양수인 경우 '+', 음수인 경우 '-' 기호 표시 "-" : 음수인 경우만 '-' 기호 표시 " " : 양수인 경우 공백(' '), 음수인 경우 '-' 기호 표시 width ::= integer precision ::= integer type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" "b" : Binary format. Outputs the number in base 2 "c" : Character. Converts the integer to the corresponding unicode character before printing. "d" : Decimal Integer. Outputs the number in base 10. "o" : Octal format. Outputs the number in base 8. "x" : Hex format. Outputs the number in base 16, using lower- case letters for the digits above 9. "X" : Hex format. Outputs the number in base 16, using upper- case letters for the digits above 9. "n" : Number. This is the same as 'd', except that it uses the current locale setting to insert the appropriate number separator characters. None : The same as 'd'. => Floating-point 인 경우 "e" : Exponent notation. Prints the number in scientific notation using the letter ‘e’ to indicate the exponent. The default precision is 6. "E" : Exponent notation. Same as 'e' except it uses an upper case ‘E’ as the separator character. "f" : Fixed point. Displays the number as a fixed-point number. The default precision is 6. "F" : Fixed point. Same as 'f', but converts nan to NAN and inf to INF. "g" : General format. For a given precision p >= 1, this rounds the number to p significant digits and then formats the result in either fixed-point format or in scientific notation, depending on its magnitude. "G" : General format. Same as 'g' except switches to 'E' if the number gets too large. The representations of infinity and NaN are uppercased, too. "n" : Number. This is the same as 'g', except that it uses the current locale setting to insert the appropriate number separator characters. "%" : Percentage. Multiplies the number by 100 and displays in fixed ('f') format, followed by a percent sign. None : Similar to 'g', except that fixed-point notation, when used, has at least one digit past the decimal point.
>>> number=3 >>> string="three" >>> "I like number is {0}".format(number) 'I like number is 3' >>> "I like number is {0}".format(string) 'I like number is three' >>> "I like number is {0}({1})".format(number,string) # {0}은 .format의 첫번째 인자, {1}은 .format의 두번째 인자에 대응 'I like number is 3(three)' >>> "{vn} is {vd}".format(vd="Hello",vn="World") # label을 지정하여 인자를 대응 'World is Hello' >>> "{vn} is {0}".format("Hello",vn="World") # 인덱스와 label을 함께 혼용하여 대응 'World is Hello' >>> "I like char is {0}".format(string[0]) 'I like char is t' >>> "I like number is {0:f}".format(number) 'I like number is 3.000000' >>> "I like number is {0:o}(octal)".format(127) 'I like number is 177(octal)' >>> "I like number is {0:x}(hexa-decimal)".format(127) 'I like number is 7f(hexa-decimal)' >>> "{0}%".format(100) '100%' >>> "{0:>10}".format("Hello") ' Hello' >>> "{0:<10}".format("Hello") 'Hello ' >>> "{0:^10}".format("Hello") # 10자리를 확보하고 가운데 정렬 (공백으로 채움) ' Hello ' >>> "{0:=^10}".format("Hello") # 10자리를 확보하고 가운데 정렬 ('='로 채움) '==Hello===' >>> "{0:!^10}".format("Hello") # 10자리를 확보하고 가운데 정렬 ('!'로 채움) '!!Hello!!!' >>> "{0:.4f}".format(3.1234567678) '3.1235' >>> "{0:0.4f}".format(3.1234567678) '3.1235' >>> "{0:10.4f}".format(3.1234567678) ' 3.1235' >>> "{{0}} is {0}".format(1234) # '{', '}' 기호 자체를 표현하려면 연속으로 2회 사용 '{0} is 1234' >>> i=0 >>> while i < 10: ... i = i+1 ... print("{0:^10}".format("=+"*i)) ... =+ =+=+ =+=+=+ =+=+=+=+ =+=+=+=+=+ =+=+=+=+=+=+ =+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+ >>>
>>> a="Hello world" >>> a.count('l') 3 >>> a.count('k') 0 >>>
>>> a="Hello world" >>> a.find('l') 2 >>> a.find('k') -1 >>> a.index('l') 2 >>> a.index('k') # index 함수는 존재하지 않는 문자의 경우 오류가 발생하게 됨 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>>
>>> a=", " >>> a.join("This") 'T, h, i, s' >>>
>>> a="hi" >>> a.upper() 'HI' >>> a="HI" >>> a.lower() 'hi' >>>
>>> a=" hi " >>> a.lstrip() 'hi ' >>> a.rstrip() ' hi' >>> a.strip() 'hi' >>>
>>> a="Life is too short" >>> a.replace("Life", "Your leg") 'Your leg is too short' >>>
>>> a="Life is too short" >>> a.split() # 함수 인자가 비어 있으면 white space (공백, 탭, 줄 바꿈) 를 기준으로 나눕니다. ['Life', 'is', 'too', 'short'] >>> a="alpha:beta:tree:four" >>> a.split(":") ['alpha', 'beta', 'tree', 'four'] >>>
>>> <리스트명>=[<요소1>,<요소2>,<요소3>, ...] # '[', ']'으로 감싸주고 콤마(',') 문자로 구분하는 요소는 어떠한 자료형이든 가능 또는 list() 함수를 사용하여 >>> <리스트명>=list([<요소1>,<요소2>,<요소3>, ...]) 또는 비어있는 리스트를 생성하기 위해서 >>> <리스트명>=[] >>> <리스트명>=list()
>>> a=[] >>> b=[1,2,3] >>> c=['a', 'b', 'c'] >>> d=["Life", "is", "too", "short"] >>> e=[1,2,"Life","is"] >>> f=[1,2,["Life","is"]] >>> g=list() >>> h=list([1,2,3])
Function & Method | 설명(Description) |
cmp(list1, list2) | 두 목록의 요소를 비교 |
len(list) | 목록(List)의 전체 길이 |
max(list) | 목록(List)에서 최대값 항목을 반환 |
min(list) | 목록(List)에서 최소값 항목을 반환 |
list(seq) | 목록(Tuple)을 목록(List)으로 변환 |
list.append(obj) | 목록(List)에 obj 객체를 추가 |
list.count(obj) | 목록(List)에 있는 obj의 개수를 반환 |
list.extend(seq) | 목록(List)에 seq 목록(List)을 추가 |
list.index(obj) | 리스트(List) 내에 있는 obj의 가장 작은 인덱스를 반환 |
list.insert(index, obj) | 객체 obj를 목록(List) index에 삽입 |
list.pop(obj=list[-1]) | 목록(List)에서 마지막 객체 또는 obj를 제거하여 반환 |
list.remove(obj) | 목록(List)에서 obj를 삭제 |
list.reverse() | 목록(List)의 순서를 역순으로 재배치 |
list.sort([func]) | 목록(List)의 객체를 정렬 (func이 주어지는 경우 정렬에 사용되는 비교루틴을 대체) |
>>> a=[1,2,3] >>> len(a) # a의 요소 갯수 3 >>> a[0] # 첫 번째 요소값 1 >>> a[-1] # 마지막 요소값 3 >>> a[len(a)-1] # 마지막 요소값 3 >>> a[1:3] # 인덱스 1부터 3-1(2) 까지 요소값 [2, 3] >>> a[1:] # 인덱스 1부터 마지막 요소값 [2, 3] >>> a[:2] # 인덱스 0부터 2-1(1)까지 요소값 [1, 2] >>> a[-0] # a[0]과 같음 1 >>> a=[1,2,3,['a','b','c']] >>> a[-1][1] # a의 1차 요소중 마지막 요소에서 인덱스 1인 요소 'b' >>>
>>> a=[1,2,3] >>> b=['a', 'b', 'c'] >>> a+b [1, 2, 3, 'a', 'b', 'c'] >>> b+a ['a', 'b', 'c', 1, 2, 3] >>>
>>> a=[1,2,'a'] >>> a*3 [1, 2, 'a', 1, 2, 'a', 1, 2, 'a'] >>>
>>> a=[1,2,3] >>> a[2]=4 >>> a [1, 2, 4] >>> a[1:2] # 범위 수정 (아래 지정 인덱스 수정과 전혀 다른 결과임에 유의) [2] >>> a[1:2]=['a', 'b', 'c'] >>> a [1, 'a', 'b', 'c', 4] >>> a[1]=['d', 'e', 'f'] # 지정 인덱스 수정 (위 범위 수정과 전혀 다른 결과임에 유의) >>> a [1, ['d', 'e', 'f'], 'b', 'c', 4] >>>
>>> a=[1,2,3,4,5,6,7,8,9,0] >>> a[1:3]=[] >>> a [1, 4, 5, 6, 7, 8, 9, 0] >>> del a[1] >>> a [1, 5, 6, 7, 8, 9, 0] >>> a=[] >>> a [] >>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined >>>
>>> a=[1,2,3] >>> a.append("Hello") >>> a [1, 2, 3, 'Hello'] >>> a.append([4,5]) >>> a [1, 2, 3, 'Hello', [4, 5]] >>>
>>> a=[4,1,2,3] >>> a.sort() >>> a [1, 2, 3, 4] >>> a=['Zebra', 'Apple', 'Beta', 'Three'] >>> a.sort() >>> a ['Apple', 'Beta', 'Three', 'Zebra'] >>>
>>> a=['Zebra', 'Apple', 'Beta', 'Three'] >>> a.reverse() >>> a ['Three', 'Beta', 'Apple', 'Zebra'] >>>
>>> a=['Zebra', 'Apple', 'Beta', 'Three'] >>> a.index("Beta") 2 >>> a=[1,2,3] >>> a.index(3) 2 >>> a.index(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 4 is not in list >>>
>>> a=[1,2,3] >>> a.insert(0, 4) # 인덱스 0인 a[0] 앞에 값 4를 삽입 >>> a [4, 1, 2, 3] >>>
>>> a=[1,2,3,1,2,3,1,2,3] >>> a.remove(3) >>> a [1, 2, 1, 2, 3, 1, 2, 3] >>> a.remove(3) >>> a [1, 2, 1, 2, 1, 2, 3] >>> a.remove(3) >>> a [1, 2, 1, 2, 1, 2] >>> a.remove(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list
>>> a=[1,2,3] >>> a.pop() # 마지막 요소를 빼냄 3 >>> a [1, 2] >>> a=[1,2,3] >>> a.pop(1) # 인덱스 1인 a[1]=2를 빼냄 2 >>> a [1, 3] >>>
>>> a=[1,2,3,1] >>> a.count(1) 2 >>>
>>> a=[1,2,3] >>> a.extend([4,5]) >>> a [1, 2, 3, 4, 5] >>> a=[1,2,3] >>> a+=[4,5] >>> a [1, 2, 3, 4, 5] >>>
[
', ']
' 가 아닌 '(
', ')
'으로 둘러싸여 사용하며 튜플(Tuple)은 그 값을 바꿀 수 없습니다.
>>> a=() >>> b=(1,) # 1개의 요소만 가질 때는 요소 뒤에 콤마(',')를 반드시 붙여야 합니다. 그렇지 않으면 정수 1로 인지합니다. >>> c=(1, 2, 3) >>> d=1,2,3 # 튜플(Tuple)은 괄호를 생략해도 됩니다. >>> e=1, # 1개의 요소만 가질 때 괄호를 생략하는 경우도 콤마(',')를 붙여야 합니다. >>> f=(1,2,"Life","is") >>> g=(1,2,("Life",)) >>> h=tuple() >>> i=tuple((1,2,3))
Function & Method | 설명(Description) |
cmp(tuple1, tuple2) | 두 목록(Tuple)의 요소를 비교 |
len(tuple) | 목록(Tuple)의 전체 길이 |
max(tuple) | 목록(Tuple)에서 최대값 항목을 반환 |
min(tuple) | 목록(Tuple)에서 최소값 항목을 반환 |
tuple(seq) | 목록(List)을 목록(Tuple)으로 변환 |
{<Key1>:<Value1>,<Key2>:<Value2>,<Key3>:<Value3>, ...} # Key는 변하지 않는 값이며 Value는 변하지 않는 값과 변하는 값 모두 사용 가능
>>> a={1:"Hi"} >>> a={'a':[1,2,3]}
Function & Method | 설명(Description) |
cmp(dict1, dict2) | 두 사전(Dictionary)의 요소를 비교 |
len(dict) | 사전(Dictionary)의 전체 길이 (요소의 개수) |
str(dict) | 사전(Dictionary)의 인쇄 가능한 문자열 표현을 생성 |
type(variable) | 전달 된 변수의 유형을 반환 (전달 된 변수가 사전이면 사전 유형을 반환) |
dict.clear() | 사전(Dictionary) 사전의 모든 요소를 제거 |
dict.copy() | 사전(Dictionary) dict의 얕은(shallow) 복사본을 반환 |
dict.fromkeys() | seq 및 값이 value로 설정된 Key를 사용하여 새 사전(Dictionary)을 생성 |
dict.get(key, default=None) | 사전(Dictionary)에서 Key를 찾아 그 값을 반환 (default가 주어지는 경우 Key가 없을 때 default를 반환) |
dict.has_key(key) | 사전 dict에서 key가 있으면 true를 반환하고 그렇지 않으면 false를 반환 |
dict.items() | dict (Key, Value) 튜플(Tuple) 쌍의 목록(List)을 반환 |
dict.keys() | dict 사전(Dictionary)의 Key 목록(List)을 반환 |
dict.setdefault(key, default=None) | get() 과 유사하지만 key가 dict에없는 경우 dict[key] = default 로 설정 |
dict.update(dict2) | 사전(Dictionary) dict2의 Key과 Value 쌍을 dict에 추가 |
dict.values() | dict 사전(Dictionary)의 Value 목록(List)을 반환 |
>>> a={1:'a'} >>> a[2]='b'; >>> a {1: 'a', 2: 'b'} >>> a["name"]="jhcho" >>> a {1: 'a', 2: 'b', 'name': 'jhcho'} >>> a[3]=[1,2,3] >>> a {1: 'a', 2: 'b', 3: [1, 2, 3], 'name': 'jhcho'} >>> del a[2] >>> a {1: 'a', 3: [1, 2, 3], 'name': 'jhcho'} >>> a={2:'a', "2":'b'} # Key가 2인 것과 "2"인 것은 다름에 유의! >>> a {2: 'a', '2': 'b'} >>>
>>> a={1: 'a', 3: [1, 2, 3], 'name': 'jhcho'} >>> a["name"] 'jhcho' >>> a[1] 'a' >>> a[3] [1, 2, 3] >>> a[2] Traceback (most recent call last): File "<stdin>", line 1, in <module> Key
>>> a={1:'a', 1:'b'} >>> a {1: 'b'} >>>
>>> a={[1,2]:"Hi"} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' >>> a={(1,2):"Hi"} >>> a {(1, 2): 'Hi'} >>> a[(1,2)] 'Hi' >>>
>>> a={"name":"jhcho","phone":"010-0000-0000","age":"10","birth":"20000101"} >>> a {'phone': '010-0000-0000', 'age': '10', 'name': 'jhcho', 'birth': '20000101'} >>> a.keys() # python 2.7까지는 리스트를 그대로 만들어 줍니다. ['phone', 'age', 'name', 'birth'] >>> a.keys() # python3 부터는 메모리 낭비를 줄이고자 dict_keys 객체를 반환합니다. dict_keys(['age', 'name', 'phone', 'birth']) >>> list(a.keys()) # python 버젼에 관계없이 리스트형으로 만들려면 다음과 같이 list 함수를 통해서 호환할 수 있습니다. ['age', 'name', 'phone', 'birth'] >>> for k in a.keys(): ... print(k) ... phone age name birth >>>
>>> a={"name":"jhcho","phone":"010-0000-0000","age":"10","birth":"20000101"} >>> a {'phone': '010-0000-0000', 'age': '10', 'name': 'jhcho', 'birth': '20000101'} >>> a.values() # python 2.7까지는 리스트를 그대로 만들어 줍니다. ['010-0000-0000', '10', 'jhcho', '20000101'] >>> a.values() # python3 부터는 메모리 낭비를 줄이고자 dict_keys 객체를 반환합니다. dict_values(['10', 'jhcho', '010-0000-0000', '20000101']) >>> list(a.values()) # python 버젼에 관계없이 리스트형으로 만들려면 다음과 같이 list 함수를 통해서 호환할 수 있습니다. ['10', 'jhcho', '010-0000-0000', '20000101'] >>> for v in a.values(): ... print(v) ... 10 jhcho 010-0000-0000 20000101 >>>
>>> a.clear() >>> a {} >>>
>>> a={"name":"jhcho","phone":"010-0000-0000","age":"10","birth":"20000101"} >>> a.get("name") 'jhcho' >>> a["name"] 'jhcho' >>> a.get("phone") '010-0000-0000' >>> a["phone"] '010-0000-0000' >>> a.get("age") '10' >>> a["age"] '10' >>> a.get("birth") '20000101' >>> a["birth"] '20000101' >>> a.get("nokey") # 없는 Key를 얻으려 하면 None을 반환 >>> a["nokey"] # 없는 Key를 얻으려 하면 오류 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'nokey' >>> a.get("nokey", "Unknown key value") # .get의 두번째 인자로 Key를 찾지 못한 경우 대체될 기본 요소값을 처리할 수도 있음. (매우 유용한 기능) 'Unknown key value' >>> "name" in a # Key가 존재하는지 검사하여 있는 경우 True 반환 True >>> "nokey" in a # Key가 존재하는지 검사하여 있는 없는 경우 False 반환 False >>> "name" in a.keys() True >>> "nokey" in a.keys() False >>> "jhcho" in a.values() True >>> "jhcho2" in a.values() False >>>
<집합자료명>=set(<자료형>)
>>> s1=set([1,2,3,4,1,2,3,4]) >>> s1 set([1, 2, 3, 4]) >>> s2=set("Hello world") >>> s2 set([' ', 'e', 'd', 'H', 'l', 'o', 'r', 'w']) >>>
>>> s2=set("Hello world") >>> s2[1] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object does not support indexing >>> list(s2)[1] 'e' >>>
&
)
>>> s1=set([1,2,3,4,5,6]) >>> s2=set([4,5,6,7,8,9]) >>> s1&s2 set([4, 5, 6]) >>> s1.intersection(s2) set([4, 5, 6]) >>>
>>> s1=set([1,2,3,4,5,6]) >>> s2=set([4,5,6,7,8,9]) >>> s1|s2 set([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> s1.union(s2) set([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>>
-
)
>>> s1=set([1,2,3,4,5,6]) >>> s2=set([4,5,6,7,8,9]) >>> s1-s2 set([1, 2, 3]) >>> s2-s1 set([8, 9, 7]) >>> s1.difference(s2) set([1, 2, 3]) >>> s2.difference(s1) set([8, 9, 7]) >>>
>>> s1=set([1,2,3]) >>> s1.add(4) >>> s1 set([1, 2, 3, 4]) >>> s1.update([5,6,7]) >>> s1 set([1, 2, 3, 4, 5, 6, 7]) >>> s1.remove(2) >>> s1 set([1, 3, 4, 5, 6, 7]) >>>
자료형 | 값 | 참 또는 거짓 |
문자열(String) | "python" | 참(True) |
문자열(String) | "" | 거짓(False) |
리스트(List) | [1,2,3] | 참(True) |
리스트(List) | [] | 거짓(False) |
튜플(Tuple) | () | 거짓(False) |
사전(Dictionary) | {} | 거짓(False) |
숫자(Number) | 0이 아닌 숫자 | 참(True) |
숫자(Number) | 0 | 거짓(False) |
NoneType | None | 거짓(False) |
>>> bool([1,2,3]) True >>> bool([]) False >>> bool(0) False >>> bool(3) True >>> bool('') False >>> bool("python") True >>>
>>> a=1 >>> b=2.0 >>> c="3" >>> a+b+c Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'float' and 'str' >>> a+b+int(c) 6.0 >>> str(a+b)+c '3.03' >>> str(a)+str(b)+c '12.03' >>>
함수(Function) | 설명(Description) |
int(<값>[,<진수>]) | 정수(Integer)로 변환 |
long(<값>[,<진수>]) | 큰 정수(Long Integer)로 변환 |
float(<값>) | 실수(Floating-point)로 변환 |
complex(<real>[,<imag>]) | 복소수(Complex-number) 객체 생성 |
str(<값>) | 문자열(String)로 변환 |
repr(<객체>) | 객체를 표현식 문자열로 변환 |
eval(<string>) | 문자열을 평가하여 객체로 반환 |
tuple(<집합형 값>) | 튜플(Tuple)로 변환 |
list(<집합형 값>) | 리스트(List)로 변환 |
set(<집합형 값>) | 집합(Set)으로 변환 |
dict(<Key와 Value의 쌍으로 이루어진 튜플>) | 사전(Dictionary)객체 생성 |
frozenset(<집합형 값>) | frozen 집합(Set)으로 변환 |
chr(<값>) | 정수(Integer)를 문자(Character)로 변환 |
unichr(<값>) | 정수(Integer)를 유니코드(Unicode) 문자로 변환 |
ord(<값>) | 하나의 문자(Character)를 정수(Integer)로 변환 |
hex(<값>) | 정수(Integer)를 16진수 문자열로 변환 |
oct(<값>) | 정수(Integer)를 8진수 문자열로 변환 |
bool(<값>) | 값을 평가하여 참/거짓으로 반환 |
>>> a=1 >>> type(a) <type 'int'> >>> a="H" >>> type(a) <type 'str'> >>> a='h' >>> type(a) <type 'str'> >>> a=[] >>> type(a) <type 'list'> >>> a=() >>> type(a) <type 'tuple'> >>> a=(1) >>> type(a) <type 'int'> >>> a=(1,) >>> type(a) <type 'tuple'> >>> a={} >>> type(a) <type 'dict'> >>> a=set([1,2,3]) >>> type(a) <type 'set'> >>> a=None >>> type(a) <class 'NoneType'> >>>
<변수명>=<변수에 저장할 값>
>>> import sys >>> sys.getrefcount(3) 28 >>> a=3 >>> sys.getrefcount(3) 29 >>> a=3 >>> sys.getrefcount(3) 29 >>> b=3 >>> sys.getrefcount(3) 30 >>> c=3 >>> sys.getrefcount(3) 31 >>> del c >>> sys.getrefcount(3) 30 >>>
>>> a,b=("python","life") # 튜플 대입 >>> a 'python' >>> b 'life' >>> (a,b) ('python', 'life') >>> (a,b)="python","life" # 튜플 대입 >>> a 'python' >>> b 'life' >>> (a,b) ('python', 'life') >>> a,b="python","life" # 튜플 대입 (괄호 생략) >>> a,b ('python', 'life') >>> a 'python' >>> b 'life' >>> [a,b]=["python","life"] # 리스트 대입 >>> a 'python' >>> b 'life' >>> a,b ('python', 'life') >>> [a,b] ['python', 'life'] >>> a=b="python" # a, b를 동일한 값으로 대입 >>> a 'python' >>> b 'python' >>> a=3 >>> b=5 >>> a,b=b,a # a와 b를 swap >>> a 5 >>> b 3 >>>
>>> a=[1,2,3] >>> b=a # 복사가 아니고 레퍼런스(Reference,참조)임에 유의 >>> a[1]=4 # a만 바꾸려던 의도였으나 사실상 b는 a를 가르키고 있음에 의도한바인지 체크! >>> a [1, 4, 3] >>> b [1, 4, 3] >>> a=[1,2,3] >>> b=a[:] # 이렇게 전체 범위를 슬라이싱(Slicing)하여 대입하면 참조가 아닌 복사가 일어납니다. >>> a[1]=4 # a와 b는 전혀 다른 복사된 객체이므로 a만 수정하게 됩니다. >>> a [1, 4, 3] >>> b [1, 2, 3] >>> from copy import copy # copy 모듈 사용 선언 >>> a=[1,2,3] >>> b=copy(a) # copy 모듈을 이용한 객체 복사 >>> a[1]=4 >>> a [1, 4, 3] >>> b [1, 2, 3] >>> a is b # 복사된 객체라면 False이고 참조된 객체라면 True False >>>
<제어문> <조건>: <수행할 구문 #1> <수행할 구문 #2> <수행할 구문 #3> [<추가 관계 제어문>[ <조건>]: <수행할 구문 #1> <수행할 구문 #2> <수행할 구문 #3> [<추가 관계 제어문...>] ] # 또는 <제어문> <조건>: <수행할 간결한 구문 #1> [; <수행할 간결한 구문 #n> [; ...]] [<추가 관계 제어문>[ <조건>]: <수행할 간결한 구문 #1> [; <수행할 간결한 구문 #n> [; ...]] [<추가 관계 제어문...>] ]
<조건>
은 어떠한 것이든 참(True)/거짓(False)를 판단할 수 있는 결과이거나 암묵적 판단이 가능한 것이면 어느것이든 조건이 될 수 있습니다.
<조건1> or <조건2>
: 조건1과 조건2 중에서 어느것이든 하나만 참(True)이면 이 결과는 참(True)입니다.
<조건1> and <조건2>
: 조건1과 조건2 모두 참(True)이면 이 결과는 참(True)입니다.
not <조건>
: 조건이 거짓(False)이면 이 결과는 참(True)입니다.
<요소> in <집합>
: 집합내에 요소가 있는 경우 참(True)입니다.
<요소> not in <집합>
: 집합내에 요소가 없는 경우 참(True)입니다.
제어문(Control Statements) | 설명(Description) |
break | 루프(Loop) 문을 종료하고 루프 바로 다음 명령문으로 실행문맥을 이동합니다. |
continue | 루프(Loop)범위의 나머지 부분을 건너 뛰고 다시 반복하기 전에 즉시 조건을 다시 테스트하도록 문맥을 이동합니다. |
pass | 수행구문이 필요하지만 실행할 코드가 없는 경우가 있을 수 있는데 이 경우 아무것도 하지 않는다는 의미로 사용합니다. |
if <조건>: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...>
>>> money=2000 # 돈이 2000원 있음. >>> have_money=money>0 # 돈이 좀 있는가? >>> if have_money: # 조건 비교 ... print("Have money %d won"%money) # 참(True) 인 경우 ... Have money 2000 won >>>
if <조건1>: <수행할 구문1-1> <수행할 구문1-2> <수행할 구문1-3> <...> else: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...>
>>> money=0 # 돈이 없음. >>> have_money=money>0 # 돈이 좀 있는가? >>> if have_money: # 조건 비교 ... print("Have money %d won"%money) # 참(True) 인 경우 ... else: ... print("No money") # 거짓(False) 인 경우 ... No money >>> if "": ... print("Not empty") ... else: ... print("Empty") ... Empty >>> a="" >>> if a == "": ... print("Empty") ... else: ... print("Not empty") ... Empty >>> if 0: ... print("Not zero") ... else: ... print("Zero") ... Zero >>> a=0 >>> if a == 0: ... print("Zero") ... else: ... print("Not zero") ... Zero >>> money=2000 # 돈 2000원을 가지고 있습니다. >>> if money <= 0: # 돈이 없다면 ... pass # 아무것도 할게 없습니다. (No operation) ... else: ... print("Have money %d won"%money) ... Have money 2000 won >>>
if <조건1>: <수행할 구문1-1> <수행할 구문1-2> <수행할 구문1-3> <...> elif <조건2>: <수행할 구문2-1> <수행할 구문2-2> <수행할 구문2-3> <...> elif <조건n>: <수행할 구문n-1> <수행할 구문n-2> <수행할 구문n-3> <...> else: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...>
>>> money=2000 # 돈이 2000원 있음. >>> if money <= 0: # 돈이 없는가? ... print("No money") ... elif money <=1000: # 1000원 미만인가? ... print("껌하나 사먹을 수 있어요.") ... elif money > 2000: # 2000원 보다 많은가? ... print("부자시네요.") ... else: # 그 외에 1000원 보다 많고 2000원 미만인가? ... print("과자를 골라드세요.") ... 과자를 골라드세요. >>>
if <조건>: <수행할 구문1>[;<수행할 구문n>] elif: <수행할 구문1>[;<수행할 구문n>] else: <수행할 구문1>[;<수행할 구문n>]
>>> money=1000 >>> if money <= 0: print("No money") ... elif money <= 1000: print("껌하나 사먹을 수 있어요.");print("껌은 %d원으로 살수 있을거예요."%money) ... elif money > 2000: print("부자시네요.");print("%d원으로는 사먹을게 많아요."%money) ... else: print("과자를 골라드세요.");print("2000원 이하의 과자만 고르세요.") ... 껌하나 사먹을 수 있어요. 껌은 1000원으로 살수 있을거예요. >>>
<참(True)일 때 구문> if <조건> else <거짓(False)일 때 구문>
>>> money=2000 >>> message="Have money %d won"%money if money > 0 else "No money" >>> print("%s"%message) Have money 2000 won >>>
while <조건>: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...>
>>> i=0 >>> while i < 10: # i가 10이 되면 거짓(False)이 되어 while 구문을 벗어나게 됩니다. ... i += 1 # 1 증가 ... print("loop %d"%i) # i값의 증가가 먼저 수행되었으므로 1부터 출력 ... loop 1 # <= i가 0일 때 진입하여 증가 후 출력되므로 1이 됨 loop 2 loop 3 loop 4 loop 5 loop 6 loop 7 loop 8 loop 9 loop 10 # <= i가 9일 때 진입하여 증가 후 출력되므로 10이 됨 >>> items=[1,0,3,4,"Hello","World"] >>> i=0 >>> while i < len(items): ... print("This loop value: %s"%items[i]) ... i+=1 ... This loop value: 1 This loop value: 0 This loop value: 3 This loop value: 4 This loop value: Hello This loop value: World >>> items={"a":"a1", "b":"b1", "c":"c1"} >>> keys=items.keys() # items의 key 목록(List)을 얻습니다. >>> i=0 >>> while i < len(keys): ... print("This dict is %s:%s"%(keys[i],items.get(keys[i]))) ... i+=1 ... This dict is a:a1 This dict is c:c1 This dict is b:b1 >>>
while <조건a>: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...> if <조건i>: break; <수행할 구문4> <수행할 구문5> <수행할 구문6> <...>
>>> items=[4,3,2,5,6,7,8,100,105] >>> i=0 >>> while i < len(items): ... print("%d 번째 items를 확인하겠습니다."%i) ... if items[i] == 7: ... print("%d 번째 items에서 행운의 7을 찾았습니다."%i) ... break ... print("%d 번째 items는 %d 이며 행운의 7은 아닙니다."%(i,items[i])) ... i+=1 ... 0 번째 items를 확인하겠습니다. 0 번째 items는 4 이며 행운의 7은 아닙니다. 1 번째 items를 확인하겠습니다. 1 번째 items는 3 이며 행운의 7은 아닙니다. 2 번째 items를 확인하겠습니다. 2 번째 items는 2 이며 행운의 7은 아닙니다. 3 번째 items를 확인하겠습니다. 3 번째 items는 5 이며 행운의 7은 아닙니다. 4 번째 items를 확인하겠습니다. 4 번째 items는 6 이며 행운의 7은 아닙니다. 5 번째 items를 확인하겠습니다. 5 번째 items에서 행운의 7을 찾았습니다. >>>
while <조건a>: <수행할 구문1> <수행할 구문2> <수행할 구문3> <...> if <조건i>: continue; <수행할 구문4> <수행할 구문5> <수행할 구문6> <...>
>>> i=0 >>> while i < 10: ... i+=1 ... if int(i % 2) == 0: ... continue ... print("1부터 10사이에 홀수 %d가 있습니다."%i) ... 1부터 10사이에 홀수 1가 있습니다. 1부터 10사이에 홀수 3가 있습니다. 1부터 10사이에 홀수 5가 있습니다. 1부터 10사이에 홀수 7가 있습니다. 1부터 10사이에 홀수 9가 있습니다. >>>
>>> while True: # 조건이 항상 참(True)이기 때문에 break 구문이 없는 이상 이 loop는 무한합니다. ... pass ... # 빠져나올려면 Ctrl+C 키를 누르는 등의 방법을 사용해야 합니다. ...
for <하나의 요소값을 가질 변수명> in <목록(List 또는 Tuple 또는 문자열)> <수행할 구문1> <수행할 구문2> <수행할 구문3> <...> if <조건b>: break; if <조건c>: continue; <수행할 구문4> <수행할 구문5> <수행할 구문6> <...>
>>> items=[3, 40, 20, "Hello", "World"] >>> for temp in items: ... print("item중에 %s가 있습니다."%temp) ... item중에 3가 있습니다. item중에 40가 있습니다. item중에 20가 있습니다. item중에 Hello가 있습니다. item중에 World가 있습니다. >>> items={3:"a", 6:"b", 78:"c"} >>> for temp in items: ... print("item중에 %s가 있습니다."%temp) ... item중에 3가 있습니다. item중에 78가 있습니다. item중에 6가 있습니다. >>> items={3:"a", 6:"b", 78:"c"} >>> for temp in items.keys(): ... print("item중에 %s가 있습니다."%temp) ... item중에 3가 있습니다. item중에 78가 있습니다. item중에 6가 있습니다. >>> items={3:"a", 6:"b", 78:"c"} >>> for temp in items.values(): ... print("item중에 %s가 있습니다."%temp) ... item중에 a가 있습니다. item중에 c가 있습니다. item중에 b가 있습니다. >>>
[range(<시작 숫자>,]<끝 숫자 + 1>)
" 와 함께 이를 해소가능합니다.
>>> for temp in range(1,11): ... print("%d"%temp) ... 1 2 3 4 5 6 7 8 9 10 >>> items=["Hello", "World", "Hi", "Good"] >>> for temp in range(len(items)): ... print("%d 번째는 %s입니다."%(temp,items[temp])) ... 0 번째는 Hello입니다. 1 번째는 World입니다. 2 번째는 Hi입니다. 3 번째는 Good입니다.
[<수행할 구문> for <하나의 요소값을 가질 변수명> in <목록(List 또는 Tuple 또는 문자열)> {if <조건>} {중첩된 for...}]
>>> items=["data",1,'a',[3,2,1],5,"Hello"] >>> dup_items=[temp for temp in items] >>> dup_items ['data', 1, 'a', [3, 2, 1], 5, 'Hello'] >>> items=(3,4,"a","b",[100,200,300]) >>> dup_items=[temp for temp in items] >>> dup_items [3, 4, 'a', 'b', [100, 200, 300]] >>> gugudan=[x*y for x in range(2,10) for y in range(1,10)] # 중첩된 for 구문으로 구구단 목록 리스트 작성 >>> gugudan [2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81] >>> gugudan=[x*y for x in range(2,10) if x >= 2 and x <= 3 for y in range(1,10)] >>> gugudan [2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27] # 중첩된 for 구문 사이에 x가 2에서 3까지만 내포된 for 진입하도록 하는 경우 >>>
>>> >>> """ 아래의 의도는 주어진 list를 순회하면서 각 요소를 삭제하여 결과적으로 list 요소를 모두 삭제하려고 하였습니다. 그런데... """ >>> >>> data = list(range(10)) >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in data: ... data.remove(i) ... >>> data [1, 3, 5, 7, 9] >>> >>> >>> """ 그럼 이번에는 for 구문 말고 인덱스 접근으로 while loop 를 사용해볼까요? 결과가 역시 의도와 다르지만 왜 그런지 조금은... """ >>> >>> data = list(range(10)) >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> i = 0 >>> c = len(data) >>> while i < c: ... data.remove(data[i]) ... c -= 1 ... i += 1 ... >>> data [1, 3, 5, 7, 9] >>> >>> >>> """ 이제 이 문제를 다음과 같이 복제된 list를 순회하면서 원본을 삭제하는 것으로 바꿔보면 의도한대로 동작합니다. """ >>> >>> data = list(range(10)) >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in data[:]: ... data.remove(i) ... >>> data []
def <함수명>(): <수행할 구문1> <수행할 구문2> <...>
>>> def print_hello(): ... print("Hello world") ... >>> for i in range(3): ... print_hello() ... Hello world Hello world Hello world >>>
def <함수명>([<인자1>[,<인자n>[...]]]): <수행할 구문1> <수행할 구문2> <...>
>>> def sum_odd(a, b): ... value = a + b ... if value % 2: print("홀수%d"%value) ... else: print("짝수%d"%value) ... >>> for i in range(10): ... sum_odd(i, 1) ... 홀수1 짝수2 홀수3 짝수4 홀수5 짝수6 홀수7 짝수8 홀수9 짝수10 >>>
def <함수명>([<인자1>[,<인자n>[...]]]): # 인자가 필요 한 경우만 인자를 사용 <수행할 구문1> <수행할 구문2> <...> return <결과값> # return 구문은 결과값이 있는 경우만 사용
>>> def sum(a, b): ... return a + b ... >>> sum(3, 5) 8 >>> def print_sum(): ... print(sum(3,5)) ... >>> print_sum() 8 >>> def sum_and_mul(a, b): ... return a+b, a*b # 콤마(',')로 구분하여 2개 이상의 결과를 튜플형으로 반환할 수 있습니다. ... >>> print(sum_and_mul(2, 3)) (5, 6) >>>
def <함수명>([<인자>,]*<가변인자명>): <수행할 구문1> <수행할 구문2> <...>
>>> def print_args(*args): ... print(args) ... >>> print_args(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) >>> def sum_args(*values): ... sum = 0 ... for i in values: ... sum = sum + i ... return sum ... >>> print(sum_args(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) 55 >>>
def <함수명>([<인자>,]**<가변인자명>): <수행할 구문1> <수행할 구문2> <...>
>>> def print_args(**args): ... print(args) ... >>> print_args(a=1,b=2,c=3) {'a': 1, 'c': 3, 'b': 2} >>>
def <함수명>(<인자1>, <인자n-1>=<초기값>, <인자n>=<초기값>): <수행할 구문1> <수행할 구문2> <...>
>>> def print_args(a, b=2, c=3): # 인자의 오른쪽(마지막) 인자부터 초기값을 명시할 수 있습니다. 초기값이 주어진 인자는 함수 호출 시 해당 인자를 생략하면 초기값으로 간주하게 됩니다. ... print(a, b, c) ... >>> print_args(1) 1 2 3 >>> print_args(1,4) 1 4 3 >>> print_args(1,4,5) 1 4 5 >>>
>>> a = 1 >>> def my_value(a): ... a = a + 100 ... >>> my_value(a) >>> print(a) 1 >>>
>>> a = 1 >>> def my_value_is_global(): ... global a ... a = a + 100 ... >>> my_value_is_global() >>> print(a) 101 >>>
>>> """ 다음과 같이 어떤 함수 myfunc 이 선언되어 있다고 하죠 """ >>> def myfunc(): ... print("Hello world\n") ... >>> >>> """ 그냥 myfunc() 으로 호출해도 되지만 """ >>> myfunc() Hello world >>> """ locals()를 이용하여 문자열 "myfunc" 을 사용하여 함수를 호출할 수 있습니다. (이렇게 되면 외부로부터 입력된 문자열을 통하여 가변적인 호출 흐름을 만드는데 용이한 경우가 있을겁니다.) """ >>> locals().get("myfunc")() Hello world >>> """ 만약 존재하지 않은 함수를 문자열 호출하려고 할 때 해당 함수가 존재하지 않는다면 기본 호출 함수를 myfunc 으로 호출되도록 할 수도 있겠죠. """ >>> locals().get("not_exist_myfunc", myfunc)() Hello world