1. 숫자, 문자열, 변수

2016. 10. 10. 20:45Programming Languages/PYTHON

1) 숫자 연산

파이선은 strong type으로 객체의 타입을 바꿀 수 없다. 


/ 부동소수점 나누기

// 정수 나누기 (버림)

% 나머지

divmod(a,b) (몫, 나머지)

** 지수


2)형변환

int(True)

int(98.6)

int('98.6')

int('99 bottles of beer on the wall')

float(True)

float(98)

float('99')

float('98.6')

str(99)

str(Ture)


3)문자열

다른 언어와 달리 파이썬에서는 문자열이 불변이다. 문자열 자체는 변경할 수 없지만 문자열의 일부를 다른 문자열로 복사할 수는 있다. 


'hi'

"hi" 

-> 둘은 같은 문자열을 나타낸다.


'"hi"'

-> '안에 "를 넣을 수도 있고, "안에 '를 넣을 수도 있다.


'''hi'''

"""hi"""

-> 세개의 인용부호를 이용해서 문자열을 표현할 수도 있는데, 일반적으로 여러줄의 문자열을 표현하는데 사용한다. 


문자열을 출력하는 방법에는 두가지가 있는데, print() 를 이용할 경우 ', \n, \t같은 이스케이프 문자나 '와 같은 인용부호를 적용해서 출력한다. 반면 대화식 인터프리터의 자동 출력 기능을 이용하면 이스케이프 문자나 인용부호가 적용되지 않고 글자 그대로 출력된다.


sample = ''' hello,

     hi,

     good bye.'''


->print (sample)을 하면 위 그대로 나오지만 대화식 인터프리터에 sample을 입력해서 자동출력하면 

' hello,\nhi,\ngood bye.' 로 출력된다. 



자주 사용되는 이스케이프 문자는 다음과 같다.


\t 

tab 

 \n

new line 

 \\

 \'

 \"


문자열을 결합할 수도 있는데, + 연산자를 이용하면 된다. 이 경우 문자열 간에 공백이 자동으로 입력되지 않는다. 하지만 print()를 이용해 여러개의 문자열을 결합해서 출력하는 경우 자동으로 공백이 포함된다.


a='ho'

b='hi'

c='ha'


a+b+c --> 'hohiha' 로 출력된다.

print(a,b,c) --> ho hi ha로 출력된다.


하나의 문자열에서 단일 문자를 추출해 낼 수 도 있는데, 이때는 []기호를 사용한다. 대괄호 안에 오프셋을 지정하여 해당 위치의 문자를 추출할 수 있다.

오프셋은 맨 앞이 0부터 시작해서 양으로 커지며, 맨 뒤는 -1부터 시작해서 음으로 커진다. 오프셋으로 특정 위치 문자에 접근하는 것은 가능하나 그 문자를 수정하는 것은 불가능하다. 대신 replace() 함수를 사용해서 특정 문자를 다른 문자로 대체할 수 있다.


replace('a', 'a famous', 100)

-> 100회까지 바꾼다. 100은 생략해도 정상작동한다.


문자열의 일부 문자열을 추출하기 위해서는 슬라이스 함수를 사용하면 된다. [시작 오프셋 : 마지막 오프셋+1 : 스텝]이라고 쓰며 스텝을 음수로 지정할 경우 거꾸로 추출해 낼 수도 있다. 


문자열의 길이는 len() 함수를 이용해서 구할 수 있으며 split()함수를 이용해서 어떤 구분자를 기준으로 하나의 문자열을 작은 문자열들의 리스트로 나누는 것도 가능하다. join() 함수는 (리스트의 항목 사이에 넣을 문자열).join(문자열로 결합하고자 하는 리스트) 꼴로 사용하는데 split와 반대의 기능을 수행한다.


문자열 내장 함수는 다음과 같다.



기능 

replace(a,b)

 문자열에 포함된 모든 a를 b로 대체

split(a) 

문자열에 포함된 모든 a를 기준으로 문자열을 분해, 결과물은 리스트 

startswith(a) 

문자열이 a로 시작되는지 아닌지를 bool로 반환 

endswith(a) 

문자열이 a로 끝나는지 아닌지를 bool로 반환 

find(a) 

a가 나오는 첫번째 오프셋 

rfind(a) 

a가 나오는 마지막 오프셋 

count(a)  

문자열에 포함된 a의 개수 

strip(a) 

양끝에서 a 들 제거 (연속된 a만 지운다) 

capitalize() 

첫 단어의 첫글자를 대문자로 

title() 

문자열에 포함된 각 단어의 첫글자를 대문자로 

upper()

문자열의 모든 단어를 대문자로 

lower() 

문자열의 모든 단어를 소문자로 

swapcase() 

대문자는 소문자로, 소문자는 대문자로 변환 

center(n) 

n만큼의 너비에 가운데 정렬로 문자 출력 

ljust(n) 

n만큼의 너비에 왼쪽 정렬로 문자 출력 

rjust(n)  

n만큼의 너비에 오른쪽 정렬로 문자 출력