단도직입 파이썬(Python) 기초 – 2 자료형(숫자형, 문자형)
오늘은 Python의 자료형에 대해 알아봅니다.
자료형의 종류로는 숫자, 문자열, 리스트, 튜플, 딕셔너리, 집합, 변수 등 여러 가지 중에서 숫자형과 문자열에 대해 알아봅니다. 굳이 외우거나 따로 공부하지 않아도 자주 접하다 보면 조금씩 익숙해지더군요. 코딩하다 에러 발생하면 다시 찾아보게 되고, 고치고, 이렇게 해보고, 저렇게도 해보고… 그러다 보면 자연스럽게 익숙해지더군요.
숫자형 자료형
항목
|
유형
|
사용법
|
정수형
|
123, -456, 0
|
>>> a = 123
>>> a = -456
>>> a = 0
|
실수형
|
1.23, -45.6
|
>>> a = 1.23
>>> a = -45.6
|
8진수, 16진수도 있지만 잘 사용하지 않습니다. 그냥 갈게요~!
사칙연산은 +,-,/,*과 제곱(**), 나눈 후 몫을 반환하는 (//), 나머지를 반환하는 (%)가 있습니다.
항목
|
사용 예
|
**
(제곱)
|
>>> a = 3
>>> b = 4
>>> a ** b
81
|
%
나눗셈 후 나머지를 반환
|
>>> 7 % 3
1
>>> 3 % 7
3
|
//
나눗셈 후 몫을 반환
|
>>> 7 // 4
1
|
다음은 문자열 자료형! 문자열을 만들 때는 큰따옴표, 작은따옴표로 둘러싸거나 연속 세 개를 둘러싸는 방법이 있습니다.
Ex) “단도직입!”, ‘파이썬’, “””인생은 너무 짧으니 “””, ’‘’파이썬이 필요해’’’
세 개의 따옴표로 둘러싸는 이유는 문자열 안에 작은따옴표나, 큰따옴표가 있을 때 사용합니다.
Ex) “Python’s Life…” (만약 ‘python’s Life…’로 사용하면 밑줄 부분만 둘러싼 형태라 에러가 발생합니다.)
상기 예제와 같은 현상을 막기 위해 “””, ‘’’를 사용하며, 백슬래시를 포함한 \”, \’ 형태로도 문자열을 만들 수도 있습니다.
Ex) ‘Python\’s Life’
긴 문자열에 줄 바꿈이 필요할 때는 \n을 삽입하거나 “””,’’’로 문자열을 구성합니다.
Ex)
>>>mutiline = 'Life is too short\nYou need python'
|
>>> multiline = """
. . . Life is too short
. . . You need python
. . . """
|
\n과 같은 코드를 이스케이프 코드라 하며, 자주 사용되는 이스케이프 코드는 아래와 같습니다.
코드
|
설명
|
\n
|
문자열 안에서 줄바꿈
|
\t
|
문자열 사이에 탭 간격 조정
|
\\
|
문자 \를 그대로 표현
|
\’
|
작은따옴표( ' )를 그대로 표현
|
\””
|
큰따옴표를( "" ) 그대로 표현
|
문자열도 더하거나 곱하기가 가능합니다. a, b에 각각 임의의 문자열을 넣고 곱해 봅니다.

len( a + b )는 문자열 a+b의 길이를 반환하는 함수입니다.
문자열 인덱싱과 슬라이싱을 ‘Python is easy’란 문자열로 알아보겠습니다.

변수 a의 인덱싱을 이용하여 슬라이싱 한 결과입니다. 이해 가시나요? ^^; 인덱싱 번호는 아래와 같습니다.
문자열
|
P
|
y
|
t
|
h
|
o
|
N
|
|
i
|
s
|
|
e
|
a
|
s
|
y
|
인덱스 번호
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
인덱스 번호
(-)
|
-14
|
-13
|
-12
|
-11
|
-10
|
-9
|
-8
|
-7
|
-6
|
-5
|
-4
|
-3
|
-2
|
-1
|
일반적으로 숫자를 셀 때 1부터 세지만, 파이썬은 0부터 센다는 점만 기억해 두세요.
[0:6]의 의미는 0 이상, 6미만의 뜻입니다.(이상 0=<, 미만 6<) 저도 좀 헷갈립디다. 그리고 문자열 자료형은 그 요솟값을 변경할 수 없습니다. a[0] = P 가 있는 상태에서 a[0] = A 와 같이 넣고자 하면 역시나 에러 발생!
이제 문자열 포매팅을 알아보겠습니다. 여러 포맷 코드를 변수와 함께 사용하여 문자열을 완성할 수 있습니다.
코드
|
설명
|
%s
|
문자열 (String)
|
%d
|
정수 (Integer)
|
%f
|
부동소수점 (Floating point)
|
%%
|
문자 ’%’ 자체
|
아래와 같은 방법으로 적용할 수 있습니다. 하나하나 뜯어보시며 직접 코딩해 보시기 바랍니다.

출력 결괏값이 같아 보이지만 맨 마지막 포맷 코드를 %d에서 %s로 넣었는데도 에러가 없는 이유는 숫자형 변수도 문자열 변수로 변환하여 넣기 때문입니다.
위의 코드 결괏값을 보고 포맷 코드 %%, %0.2f의 의미를 이해한다면, 포맷 코드와 숫자를 함께 사용한 문자열 정열도 쉽게 이해할 수 있습니다.
포맷 코드를 숫자와 함께 사용하면 조금 더 유용하게 쓸 수 있습니다.

‘%10s’ 의 의미는 문자열 공간 10칸을 확보한 후 9,10번째 ‘hi’를 넣습니다.(우측 밀착!)
‘%-10’은 마찬가지로 문자열 공간 10칸을 확보한 후 1,2번째 ‘hi’를 넣습니다.(좌측 밀착!)
format 함수에 대해 알아봅니다. format 함수는 아래와 같이 숫자를 직접 입력하거나 이름이나 변수를 사용한 포맷팅도 가능합니다.

format 함수에서 이름을 사용할 때는 위 예문과 같이 {name = value}의 형식이 반드시 필요합니다.
format 함수를 이용하면 간단하게 문자열을 정리할 수 있습니다.

10개의 문자열 칸을 확보한 후 왼쪽( < ), 오른쪽( > ), 가운데( ^ )로 정렬하거나 빈칸 채우기도 가능합니다.
f 문자열 포맷팅에 대해 알아봅니다. Format 함수와 사용법이 상당히 유사합니다. (Python 3.6미만 버전은 사용할 수 없는 점 유의하세요!!!)

딕셔너리 자료형에 대한 내용은 다음에 알려드리도록 하겠습니다. 이렇게도 사용하는구나 정도로만 보시면 되겠습니다.
그리고 자주 마주하게 될 문자열 함수 몇 가지에 대해 알아보겠습니다. 엑셀(MS-Excel)에서 사용하는 함수와 비슷한 점이 많아요~~!

find 함수에서 찾고자 하는 문자가 문자열에 포함되지 않았을 때 -1을 반환하는 반면 index 함수는 에러를 발생시키고 실행을 중단하는 점이 다릅니다.
그리고 [‘a’, ‘b’ , ’c’]의 형태는 리스트(배열)를 나타내는 것으로 다음 시간에 알아보도록 하겠습니다.