An Informal Introduction to Python
아래의 예제를 보면 입력과 출력은 프롬프트(>>>과 . . .)의 여부로 구분됩니다. 프롬프트가 나타날때는 반드시 프롬프트 다음에 입력을 해야합니다. 문장이 프롬프트로 시작하지 않으면 그건 출력 결과입니다. 예에서 한 행의 보조 프롬프트는 빈 행을 입력해야한다는 것을 의미합니다. 이것은 다중 행 명령을 종료하는 데 사용됩니다.
이 메뉴얼에는 프롬프트와 코멘트가 들어간 많은 예시문이 있습니다. 파이썬의 코멘트(주석)은 #으로 시작하는 한 줄(문장)입니다. 코멘트(주석)은 줄의 시작이나 공백 또는 코드의 뒤에 나타날 수는 있지만 문자열에는 나타나지 않을 수 있습니다. 문자열 안에 있는 #는 그저 #문자일 뿐입니다. 코멘트(주석)은 코드를 명확하게 하고 파이썬으로 번역되지 않기 때문에 예제를 쓸 때 생략할 수 있습니다.
예시)
>>> spam = 1 #and this is commnet
>>> text="#this is not comment"
>>> print(spam)
1
>>> print(text)
#this is not comment
1. 파이썬으로 계산하기
1.1 숫자(Numbers)
인터프리터는 간단한 계산기입니다. 표현 구문은 직설적입니다. : +, - , * , / 가 다른 언어에서 처럼 작동합니다. 소괄호는 식을 묶는 데 이용됩니다.
>>> 2 + 2
4
>>> 50-5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8/5
1.6
>>> 4/3 #나누기는 항상 부동 소수점 수(float)로 반환됩니다.
1.3333333333333333
>>> 2 + 2
4
>>> 50-5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8/5
1.6
>>> 4/3 #나누기는 항상 부동 소수점 수(float)로 반환됩니다.
1.3333333333333333
정수는 2, 4, 20는 int,글자색 5.0, 1.6과 같은 소ㅋ수부분이 있는 실수는 float 타입을 가집니다. 이후 더 많은 숫자 타입을 다루게 될 것입니다.
나누기의 결과값은 항상 실수형태로 반환됩니다. 내림을 해서 정수값만 얻고 싶을 경우에는 //을 사용합니다. 나머지 값을 얻고 싶을 때에는 %를 사용합니다.
>>> 17 / 3 # classic division returns a float
5.666666666666667
>>> 17 // 3 # floor division discards the fractional part
5
>>> 17 % 3 # the % operator returns the remainder of the division
2
>>> 5 * 3 + 2 # result * divisor + remainder
17
>>> 17 / 3 # classic division returns a float
5.666666666666667
>>> 17 // 3 # floor division discards the fractional part
5
>>> 17 % 3 # the % operator returns the remainder of the division
2
>>> 5 * 3 + 2 # result * divisor + remainder
17
**는 제곱값을 구할 때 사용합니다.
>>> 5 ** 2 #5의 2제곱
25
>>> 2 ** 7 #2의 7제곱
128
>>> 5 ** 2 #5의 2제곱
25
>>> 2 ** 7 #2의 7제곱
128
=은 값을 변수에 할당할 때 사용합니다. 다음 활성 프롬프트 전에 결과값은 출력되지 않습니다.
>>> width = 20
>>> height = 5*9
>>> width*height
900
>>> width = 20
>>> height = 5*9
>>> width*height
900
만약에 변수가 지정되지 않은 채로 사용하려 하면 에러가 납니다.
>>> n # try to access an undefined variable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined
>>> n # try to access an undefined variable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined
식에 Float(실수)가 껴있으면 정수값이 실수값으로 변환되어 계산됩니다.
>>> 4 * 3.75 - 1
14.0
>>> 4 * 3.75 - 1
14.0
활성모드에서 이전 결과값을 변수에 할당하려면 '_'을 이용하면 됩니다.
>>> tax = 12.5/100
>>> price = 1000.50
>>> price * tax
125.0625
>>> price + _
1125.5625
>>> tax = 12.5/100
>>> price = 1000.50
>>> price * tax
125.0625
>>> price + _
1125.5625
변수는 읽기 전용으로만 사용됩니다. 명시적으로 값을 지정하지 마세요. 기능을 가진 내장 변수와 같은 이름의 독립적인 지역 변수를 만들 수도 있습니다. int와 float에 더하여, 파이썬은 Demicial과 Fraction 등 다른 숫자 데이터타입도 지원합니다. 파이썬은 j나 J를 붙여 표현하는 복소수도 지원합니다. (3+5j)
1.2 문자(Strings)
>>> 'spam egg'
'spam egg'
>>> "dosen't"
"dosen't"
>>> 'dosen't'
File "<stdin>", line 1
'dosen't'
^
SyntaxError: invalid syntax
>>> 'dosen\'t'
"dosen't"
>>> 'spam egg'
'spam egg'
>>> "dosen't"
"dosen't"
>>> 'dosen't'
File "<stdin>", line 1
'dosen't'
^
SyntaxError: invalid syntax
>>> 'dosen\'t'
"dosen't"
활성 인터프리터에서 따옴표 안의 백슬레쉬(\)는 백슬레쉬로 출력됩니다. 문자열에 작은 따옴표와 큰 따옴표가 포함되어 있지 않으면 문자열을 큰 따옴표로 묶습니다. 그렇지 않으면 작은 따옴표로 묶습니다. 그리고 print() 함수는 결과물을 따옴표를 생략하고 이스케이프 된 특수 문자를 출력해줍니다.
>>> a='첫째\n둘째\n셋째'
>>> a
'첫째\n둘째\n셋째'
>>> print(a)
첫째
둘째
셋째
>>> a='첫째\n둘째\n셋째'
>>> a
'첫째\n둘째\n셋째'
>>> print(a)
첫째
둘째
셋째
만약 print 함수에서 특수문자가 문자 그대로 나오게 하고 싶으면 문장 앞에 'r'을 붙여주면 됩니다.
>>> print('C:\some\name') # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name') # note the r before the quote
C:\some\name
>>> print('C:\some\name') # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name') # note the r before the quote
C:\some\name
문자값을 여러 줄로 넣을 수도 있습니다. 첫번째 방식은 작은따옴표나, 큰따옴표 3개로 감싸주는 것입니다. 줄 끝은 문자열에 자동으로 포함되지만 줄 끝에 \를 추가하여이를 방지 할 수 있습니다.
>>> print("""\
... -h display this usage
... -H hostname host name
... """)
-h display this usage
-H hostname host name
>>> print("""\
... -h display this usage
... -H hostname host name
... """)
-h display this usage
-H hostname host name
문자값은 +를 이용하여 연결할 수 있습니다. *를 이용하면 반복됩니다.
>>> 'a'*1 + 'b'*2 +'c'*3
'abbccc'
>>> 'a'*1 + 'b'*2 +'c'*3
'abbccc'
두개 이상의 문자값(따옴표로 감싼 후)을 연달아 쓰면 자동으로 붙여줍니다. 이런 특성은 긴 문장을 잘라서 입력하고 싶을 때 유용합니다.
>>> '오늘부터' ' 우리는'
'오늘부터 우리는'
>>> 가사 = ('널 향한 설레임을 오늘부터 우리는'
... '꿈꾸며 기도하는 오늘부터 우리는')
>>> 가사
'널 향한 설레임을 오늘부터 우리는꿈꾸며 기도하는 오늘부터 우리는'
>>> '오늘부터' ' 우리는'
'오늘부터 우리는'
>>> 가사 = ('널 향한 설레임을 오늘부터 우리는'
... '꿈꾸며 기도하는 오늘부터 우리는')
>>> 가사
'널 향한 설레임을 오늘부터 우리는꿈꾸며 기도하는 오늘부터 우리는'
이 기능은 두 개의 문자값에만 적용되며, 변수나 표현에는 적용되지 않습니다.
>>> 가수 = '여자친구'
>>> 가수 ' - 오늘부터 우리는'
File "<stdin>", line 1
가수 ' - 오늘부터 우리는'
^
SyntaxError: invalid syntax
>>> 가수 = '여자친구'
>>> 가수 ' - 오늘부터 우리는'
File "<stdin>", line 1
가수 ' - 오늘부터 우리는'
^
SyntaxError: invalid syntax
indices(색인지수...??)는 음수도 될수 있으며, 그 경우 오른쪽에서부터 계산을 시작합니다.
>>> text='ABCDEFG'
>>> text[1]
'B'
>>> text[0]
'A'
>>> text[-1]
'G'
>>> text='ABCDEFG'
>>> text[1]
'B'
>>> text[0]
'A'
>>> text[-1]
'G'
Slicing(쪼개기)도 가능합니다. 색인이 하나의 문자를 얻기 위한 것이라면 쪼개기는 문자열을 얻게 해줍니다.
>>> text[1:3]
'BC'
>>> text[1:3]
'BC'
쪼개기에는 고정값을 이용할 수도 있습니다. 첫번째 값의 고정값은 0이고 두번째 값의 고정값은 문자열의 길이입니다.
>>> text[4:]
'EFG'
>>> text[:3]
'ABC'
>>> text[4:]
'EFG'
>>> text[:3]
'ABC'
문자열의 위치번호는 아래와 같이 정해집니다.
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
문자열의 길이를 넘어가는 값일 경우는 아래와 같이 정상적으로 처리 됩니다.
>>> text [ : 42 ]
'ABCDEFG'
>>> text [ 42 : ]
''
>>> text [ 3 : 30 ]
'DEFG'
>>> text [ : 42 ]
'ABCDEFG'
>>> text [ 42 : ]
''
>>> text [ 3 : 30 ]
'DEFG'
문자열을 쪼개어 다른 문자와 붙여 새로운 문자열을 만들 수도 있습니다.
>>> text [ 0 : 3 ] +'알파벳'
'ABC알파벳'
>>> text [ 0 : 3 ] +'알파벳'
'ABC알파벳'
문자열의 길이는 len() 함수를 이용하여 알아낼 수 있습니다.
>>> text = ' 한걸음 앞에 서서 두 손을 놓지 말기로 약속해요 '
>>> len ( text )
26
>>> text = ' 한걸음 앞에 서서 두 손을 놓지 말기로 약속해요 '
>>> len ( text )
26
1.3 리스트(Lists)
파이썬은 다른 값을 그룹화하는 데 사용되는 여러 가지 복합 데이터 유형을 알고 있습니다. 가장 유용한 것이 대괄호 사이에 값을 쉼표로 구분하는 list입니다. 목록에는 다양한 유형의 데이터가 포함될 수 있지만, 보통 한 목록의 데이터 유형은 모두 동일합니다.
>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
리스트도 쪼개기가 가능합니다.
>>> list = [1,2,3,4,5,6,7,8,9,10]
>>> list[1:5]
[2, 3, 4, 5]
>>> list = [1,2,3,4,5,6,7,8,9,10]
>>> list[1:5]
[2, 3, 4, 5]
모든 쪼개기 작업은 요청된 요소가 포함된 새 목록을 반환합니다. 그리고 리스트는 붙이기와 같은 기능도 제공합니다.
>>> list [ : ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list + [ '하나', '둘', '셋' ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '하나', '둘', '셋']
>>> list [ : ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list + [ '하나', '둘', '셋' ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '하나', '둘', '셋']
문자열(Strings)과 다르게 리스트(list)는 내용 변경이 가능합니다.
>>> list[9] =100
>>> list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 100]
>>> list[9] =100
>>> list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 100]
새로운 항목을 추가할 수도 있습니다.
>>> list = [1,2,3,4,5]
>>> list.append(6)
>>> list
[1, 2, 3, 4, 5, 6]
>>> list = [1,2,3,4,5]
>>> list.append(6)
>>> list
[1, 2, 3, 4, 5, 6]
쪼개기 기능을 이용해 list의 내용을 지우거나 크기를 조절할 수도 있습니다.
>>> list = [ 1,2,3,4,5 ]
>>> list [ 2:3 ] = [ 'C', 'D' ]
>>> list
[1, 2, 'C', 'D', 4, 5]
>>> list [ 4 : 6 ]=[ ]
>>> list
[1, 2, 'C', 'D']
>>> list = [ 1,2,3,4,5 ]
>>> list [ 2:3 ] = [ 'C', 'D' ]
>>> list
[1, 2, 'C', 'D', 4, 5]
>>> list [ 4 : 6 ]=[ ]
>>> list
[1, 2, 'C', 'D']
len()함수를 이용해 길이를 알 수 있습니다.
>>> list=[1,2,3,4,5,6,7,8,9,10]
>>> len(list)
10
>>> list=[1,2,3,4,5,6,7,8,9,10]
>>> len(list)
10
리스트와 리스트를 엮어 리스트 둥지를 만들 수 있습니다.
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b
-------------------------
안녕하세요! 호두입니다. 이번에는 숫자값과 문자열/ 배열값을 다루는 파이썬 기초를 정리해보았는데요. 엄청기네요. ㅎㄷㄷ.
지금까지는 이 방식이 꼼꼼히 배워 나갈 수 있어서 괜찮아 보입니다. 효율성은 매우 떨어지지만요.ㅠㅠ
어떻게 하면 좀더 화면이 예쁠까 고민중인데요. 이제보니 오늘 시도해본 포멧이 너무 칙칙해보입니다.
다음 번엔 좀 더 나아진 글을 들고 올게요. ㅠㅠ