파이썬에서 문자열은 큰따옴표(“...”) 혹은 작은 따옴표 (‘...’)로 묶인 문자들의 집합이다.


“Hello world.”
‘Mokpo National Univ.’
“12.3”


위의 예는 모두 문자열을 나타낸다. 12.3은 숫자이고 이것을 따옴표로 묶은 “12.3”은 문자열이다. 즉, 문자’1’, 문자’2’, 문자’.’, 문자’3’ 의 배열(array)이다. 파이썬에서 문자형이라는 자료형은 별도로 없다. 다른 언어(C/C++, JAVA, C# 등)에서는 보통 작은 따옴표는 한 문자를 표현할 때 사용되지만 파이썬에서는 문자열을 입력할 때 사용한다는 것에 유의하자.


 문자열을 입력하는 방법을 왜 두 가지로 마련해 놓았을까? 작은 따옴표가 포함된 문자열 혹은 큰따옴표가 포함된 문자열을 쉽게 입력할 수 있기 때문이다.


‘He said “hi”. ’
“I’m your father.”


 파이썬 문자열에도 C언어의 printf()함수에서 사용하였던 특수 문자를 사용할 수 있다. 특수문자는 역슬래시(\ 는 여기서는 escape cahracter 라고 한다.)로 시작하며 특수한 용도로 사용된다. 다음 표에 주로 쓰이는 특수 문자를 정리하였다.


[표 1 ] 파이썬의 문자열에 쓰이는 특수문자

문자

설명

\n

줄바꿈

\t

수평 탭(tab)

\\

‘\’문자 자체를 의미

\’

작은따옴표 문자

\”

큰따옴표 문자


예를 들면 다음과 같다.


“He sais \”How are you?\””
“Hi.\nHello.”
‘He\’s finished.’


단 문자열의 중간에 줄바꿈 기호 ‘\n’이 들어가면 가독성이 떨어지므로 파이썬에서는 줄바꿈 기호를 타이핑하지 않고 그대로 입력할 수 있는 방법으로 “”” ... “”” 과 ‘’’ … ’’’ 를 제공한다.


>>> s = “””HI
Hello”””


라고 입력하고 그 결과를 확인해 보자.


>>> s


문자열 s에는 사용자가 엔터키로 입력한 줄바꿈 기호가 ‘\n’으로 자동으로 치환되었음을 알 수 있다.


만약 문자열 안의 ‘\’ 문자를 이스케이프 문자로 간주하지 않고 단순 문자로 사용하고 싶다면 ‘\\’와 같이 입력해도 되지만 한 문자열 안에 이런 경우가 많이 발생한다면 문자열 앞에 r을 붙이면 된다. 문자열 앞에 r이 붙으면 그 문자열 안의 모든 ‘\’는 단순 문자로 처리되며 결과 문자열에서는 ‘\’문자가 자동으로 ‘\\’로 변환된다.


>>> r'Hi.\nMy name:\tjhp'
'Hi.\\nMy name:\\tjhp'


이 방법은 특히 정규식(regular express)을 다룰 때 유용하다.



Posted by 살레시오
,

 파이썬의 산술 연산자는 다음과 같은 것들이 있다.


[표 1] 파이썬의 산술 연산자들

연산자

기능

비고/용례

+

덧셈

11+22, a+12, a+b

-

뺄셈

11-22j - 33, a-12, a-b

*

곱셈

11*22, (33+44j)*(55-66j), a*b

/

나눗셈

결과는 실수형이다. (2.x에서는 int / int의 결과는 int)

//

자리내림 나눗셈

피연산자가 모두 정수인 경우 나눗셈의 결과 소수점 아래는 버리고 정수만 취한다.

둘 중 하나라도 실수라면 / 연산자와 동일함.

**

거듭제곱

2**10, (1+2j)**20

%

나머지

3%4, -10%3, 12.345%0.4


여기서 나눗셈의 경우 버전에 따라서 결과가 다르다. 2.x버전에서는 정수간 나눗셈의 결과는 정수였다. 즉 1/2는 0, 2/3은 1이다. 하지만 3.x버전에서는 정수간 나눗셈의 결과는 나누어 떨어지는 경우라도 무조건 실수형이 된다. 즉, 1/2는 0.2, 6/3은 2.0이 된다. 다음 결과를 확인해 보자.


>>> 4/5
>>> a,b = 11,5 #a에 11, b에 5를 대입한다.
>>> b/a


2.x버전에서는 정수끼리의 나눗셈의 결과는 정수라는 것에 유의해야 한다.


 연산자 //는 두 피연산자가 모두 정수일 경우 결과값이 실수이면 소수점 아래는 버린다.


>>> 9//2 # 결과는 4 (정수)

>>> 9//2.0 # 결과는 4.5(실수)


 연산자 %는 나눗셈 수행 후 정수몫을 구하고 난 나머지를 구하는 연산자이다. 다음을 확인해보라.


>>> 3%2
1
>>> 11.5%0.2
0.09999999999999937
>>> 11.5%0.3
0.10000000000000042


실수 연산의 경우는 결과값이 정확하지 않을 수도 있다.


 연산자 **는 거듭제곱 연산자이다. 다음 연산의 예를 보자.


>>> 2**10
1024
>>> a,c = 3,4+5j
>>> c**a
(-236+115j)
>>> a**c
(57.00434317675227-57.54567628403595j)


위에서 복소수의 거듭제곱 c**a 는  (4+5j)*(4+5j)*(4+5j) 의 결과값을 보여준다. 파이썬에서는 복소수에 대한 산술 연산도 기본적으로 지원하므로 쉽게 수행할 수 있음을 알 수 있다.


---- (이하 생략 가능) --------------------------------------------------------------------------


 그렇다면 a**c는 왜 저런 결과가 나왔을까? 다음과 같이 오일러(Euler)공식을 이용하면 된다.



이 식의 결과와 위 예제의 결과는 동일하다.



Posted by 살레시오
,

 파이썬의 숫자 데이터를 분류하면 다음과 같다.


[표 1] 숫자형의 분류

숫자형

개요

정수(int)

범위에 제한이 없다.

16진수, 8진수, 2진수로도 표현 가능하다.

(파이썬2.x 버전에서는 큰 정수에 l/L 접미사를 붙여야 함.)

실수(float)

소수점 이나 e/E 가 포함된 숫자

복소수(complex)

허수부(j/J) 가 포함된 숫자


 다른 언어들과는 달리 파이썬은 정수에 대해 범위 제한이 없으며 복소수까지 기본 자료형에 포함된다. 복소수는 숫자 뒤에 j/J 를 붙이면 된다. 파이썬쉘에서 다음 예를 하나씩 실행해 보고 결과를 확인해 보자.


>>> a=123
>>> b1=3.14
>>> b2=1e-10
>>> c=10000000000000000000000000000000000 # 정수는 범위 제한이 없다.
>>> d1=1+2j
>>> d2=1j #허수를 표기할 때 1j 와 같이 1을 꼭 붙여야 한다.
>>> d3=-3-1j
>>> e=0x12a #16진수. 0x(제로 엑스) 혹은 0X 로 시작한다.
>>> f=0b1101101 #2진수. 0b(제로 비) 혹은 0B 로 시작한다.
>>> g=0o1234 #8진수. 0o (제로 오) 혹은 0O로 시작한다.


정수는 10진수/16진수/8진수/2진수로 표현할 수 있으며 실수형은 십진수 형식으로만 표현된다. 숫자에 소수점이나 지수를 표시하는 e/E가 있다면 실수이고 그렇지 않다면 정수로 분류된다. 또한 허수부가 포함되어 있다면 복소수형이다.


 재미있는 것은 0j, -0j, +0.0j, -0.0j 도 내부적으로 complex 형으로 간주된다는 것이다. 숫자 상수나 변수의 형을 보려면 내장 함수인 type()을 이용한다.


>>> type(10)
>>> type(-1.2)
>>> a=3+4j; type(a)
>>> type(2+0j)


 정수의 범위에 제한이 없다는 점도 특이한 점이다. 이러한 점에서 파이썬이 매우 큰 숫자를 다뤄야 하는 분야나(예를 들어서 천문학, 경제학) 데이터 분석에서 타언어보다 유리하다는 점을 짐작할 수 있다. (2.x버전에서는 큰 정수를 표시하기 위해서는 정수 뒤에 L/l 접미어를 붙여야 한다. 그러나 3.x버전은 그런 제약이 없다.)


 복소수는 실수부, 허수부, 켤레복소수를 구할 수 있는 속성(attribute)이 있는데 각각 real, imag, conjugate() 이다. 다음을 실습해 보자.


>>> c=11+22j
>>> c.real
>>> c.imag
>>> c.conjugate()


또한 내장 함수인 abs()를 이용하면 복소수의 크기를 구할 수 있다.


>>> abs(c)


 십진수의 이진수 표현을 알고 싶다면 bin()이라는 내장함수를 사용하면 된다. 팔진수는 oct(), 십육진수는 hex()함수를 이용한다.


>>> a=1234
>>> bin(a)
'0b10011010010'
>>> oct(a)
'0o2322'
>>> hex(a)
'0x4d2'


단, 이 함수들은 정수형에 대해서만 동작하며 반환값이 문자열이라는 것에 유의해야 한다.


 만약 일반적인 변수의 값을 확인하고 싶다면 파이썬쉘에서 변수명을 입력하고 엔터를 치면 변수의 값을 보여준다.


>>> a
>>> c, z # 여러 변수를 동시에 출력하고 싶다면 콤마(,)로 구분한다.


 만약 ipython쉘을 사용하고 있다면 현재 정의된 모든 변수값을 보고 싶다면 ‘who ‘ 명령어를 이용하면 된다.




Posted by 살레시오
,