본문 바로가기

Programming/[Python]

[Python/점프 투 파이썬 복습] 2. (1) Python 프로그래밍 자료형(숫자형과 문자열 자료형)

복습용/초보자 참고를 목적으로 포스팅합니다.

 

최근 들어 프로그래밍 언어들 중 직관적인 표현으로 코딩이 가능한 Python이 인기를 끌고 있습니다.

 

코드 구성의 가독성이 타 언어 대비 뛰어나고, C/C++/JAVA에서 구현 가능한 모든 것들을 Python에서도 만들 수 있습니다.

데이터 분석부터 머신러닝, 딥러닝 등 다양한 분야에서 활용 가능한 언어 Python 지금부터 차근차근 공부해봅시다.

 

 

 

2장 (1). 자료형(숫자형과 문자열 자료형)

 

2. 1 숫자형

 

숫자형이란 숫자 형태로 이루어진 자료형입니다.  우리가 흔히 사용하는 숫자들이 이에 해당됩니다.

예를 들어 1, 2, 3과 같은 정수, 12.3과 같은 실수, 1 + 2j 같은 복소수, 8진수, 16진수 모두가 숫자형입니다.

 

정수형(Integer)은 말 그대로 정수를 뜻하는 자료형입니다. 

#정수형 예시
int_a = 123
int_b = -123
int_c = 0

실수형(Floating-point)은 소수점이 포함된 숫자를 뜻하는 자료형입니다.

실수형은 표현 방식이 두 가지로 나뉩니다.

우리가 알고있는 일반적인 소수점 표현 방식컴퓨터식 지수 표현 방식이 있습니다.

1.23E10(또는 1.23 e10 둘 다 같은 의미)은 1.23*1010과 같은 의미 입니다.

#실수형 예시
float_a = 1.2
float_b = -1.23

#컴퓨터식 지수 표현 방식
float_a = 1.23E10

다음은 8진수와(Octal) 16진수(Hexadecimal) 자료형입니다.

8진수의 표기법은 숫자가 0o(숫자 0, 대문자 또는 소문자 o)로 시작하면 됩니다.

16진수의 경우 숫자가 0x로 시작하면 됩니다.

#8진수 예시
oct_a = 0o123

#16진수 예시
hexadecimal_a = 0x8ff

복소수(Complex number) 자료형에는 몇 가지 내장 함수가 있습니다.

내장 함수에 대해 간단히 말씀드리면 

외부 라이브러리나 모듈, 패키지 등을 설치하지 않고 바로 사용할 수 있는 함수를 말합니다.

함수에 대한 부분은 추후 다른 포스팅에서 자세히 다루겠습니다.

#복소수 예시
comp_a = 1 + 2j
comp_b = 3 - 4j

#복소수의 실수 부분을 리턴하는 내장 함수
comp_a = 1 + 2j
comp_a.real #1.0

#복소수의 허수 부분을 리턴하는 내장 함수
comp_a = 1 + 2j
comp_a.imag #2.0

#복소수의 켤레복소수를 리턴하는 내장 함수
comp_a = 1 + 2j
comp_a.conjugate() #(1-2j)

#복소수의 절댓값 리턴
comp_a = 1 + 2j
abs(comp_a) #2.236067977499

숫자형 연산하기

 

#숫자형 사칙연산
a = 2
b = 1

a + b #3
a - b #1
a * b #2
a / b #2

#숫자형 제곱연산
a = 2
b = 3

a**b #8

#숫자형 몫과 나머지 연산
a = 3
b = 2

a % b #1 나머지를 반환
b % a #2

a // b #0 몫을 반환 

2. 2 문자열 자료형

 

문자열(String)이란 문자나 단어 등으로 구성된 문자들의 집합을 의미합니다. 

"Life is short, You need Python"

"a"

"123"

예시를 보고 의문점이 생기시나요?

123을 보고 저건 숫자형이 아닌가?라는 생각을 할 수 있습니다.

결론부터 말씀드리면 어떤 문구나 숫자든 큰 따옴표("") 안에 둘러 싸여 있다면 모두 문자열로 취급합니다. 

 

간단한 예시를 들어 확인해 보겠습니다.

#각 변수에 숫자123과 문자열"123"을 대입한 후 진위 판별
a = 123

b = "123"

print(a == b) #False

#각 변수의 자료형 판별
a = 123

b = "123"

type(a) # <class : int>
type(b) # <class : str>

비교 연산자 '=='를 통해 a 변수에 할당된 값과 b 변수에 할당된 값이 같은지 확인해 보았습니다.

결과는 False로 명백히 다른 값임을 확인할 수 있습니다.

추가적으로 type 함수를 통해 변수가 어떤 자료형인지 판별이 가능합니다.

예시 코드의 결과와 같이 a는 Integer(정수형) b는 String(문자열) 임을 확인할 수 있습니다.


문자열 만들기

 

문자열을 만들 때는 작은따옴표와 큰 따옴표 모두 사용이 가능합니다.

단,  문자열 생성 시 주의할 점이 있습니다.

  • 문자열에 작은따옴표를 포함시키는 경우엔 큰 따옴표로 둘러싸야한다.(반대의 경우도 마찬가지)

  • 같은 따옴표를 사용해야 될 때는 \(백 슬래시)를 이용하여 따옴표를 문자열에 포함시킨다.

  • 여러 줄인 문자를 변수에 대입하고 싶을 때는 이스케이프 코드'\n'을 삽입한다.

문자열을 만들 경우에는 예시와 같이 활용이 가능합니다.

#문자열 만들기
"Python"
'Python'
"""Python"""
'''Python''' # 4가지 경우 모두 다 같은 문자열 Python

#문자열에 작은 따옴표를 포함시키는 경우
D_D = "I'm Daily_Data" # 큰 따옴표로 감싸준다.

#문자열에 큰 따옴표를 포함시키는 경우
say = '"Python is easy." he says.' # 작은 따옴표로 감싸준다.

#백슬래시를 이용하여 문자열에 포함시키기
food = 'Python\'s favorite food is perl'

#여러 줄인 문자열을 변수에 대입
multiline = "Life is short\nYou need python"
multiline = '''
Life is short
You need python
'''

문자열 연산하기

 

Python에서는 문자열을 더하거나 곱하는 연산이 가능합니다.

문자열을 더해서 연결(Concatenation)하는 경우와 곱하는 경우의 예시입니다.

#문자열을 더해서 연결하기
head = "Python"
tail = "is fun"

head + tail #Python is fun

#문자열 곱하기
a = "Python"

a * 2 #PythonPython

문자열 인덱싱과 슬라이싱

 

문자열 인덱싱(Indexing)이란 문자열 내의 특별한 값을 뽑아내는 기법입니다. 

#코드 예시
sentence = "Life is short, You need Python"

변수 sentence에 저장된 문자열의 각 문자마다 번호를 매겨보면 다음과 같습니다.

L i f e   i s   t o o   s h o r t ,   ...
0                   1                 ...
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 ...

위 표를 보고 파이썬은 숫자를 0부터 센다는 사실을 알아두어야 합니다.

sentence [2]는 문자열의 세 번째 문자인 f를, sentence [12]는 13 번째 문자인 s를 가리키고 있음을 확인할 수 있습니다.

#인덱싱 예시
sentence[2] #f
sentence[12] #s

#인덱싱 활용
sentence[-0] #L
sentence[0] #L

sentence[-2] #뒤에서 두 번째 문자인 o
sentence[-5] #뒤에서 다섯 번째 문자인 y

문자열 슬라이싱(Slicing)은 단어를 통째로 뽑아낼 수 있는 기법입니다.

인덱싱보다 효율적으로 단어를 뽑아낼 수도 있다는 것이 장점입니다.

#코드 예시
a = "Life is short, You need Python"

#인덱싱으로 'Life'라는 단어 추출
b = a[0] + a[1] + a[2] + a[3]
b # Life

#슬라이싱으로 'Life'라는 단어 추출
b = a[0:4]
b # Life

예시처럼 슬라이싱으로 단어를 추출할 때 인덱싱보다 코드가 간결해진 것을 알 수 있습니다.

이때 공백도 단어처럼 취급이 되며, [0 : 4]는 인덱스 번호 0 포함 4 미만이라는 것을 주의해야 합니다.

#슬라이싱 예시
a = 'Life is short, You need Python'
a[0:4] #Life

#슬라이싱 활용
a[5:7] # is
a[19:] # You need Python
a[:17] # Life is short
a[:] # Life is short, You need Python
a[19:-7] # You need

문자열 포매팅

 

문자열 포매팅(Formatting)이란 문자열에 어떤 값을 삽입하는 방법입니다.

#문자열 포매팅 예시
a = "I eat %d apples."% 3
# I eat 3 apples.

b = "I eat %s apples."% "three"
# I eat three apples.

#숫자값을 나타내는 변수 대입
number = 3
c = "I eat %d apples."% number
# I eat 3 apples.

#2개 이상의 값 넣기
number = 3
day = "three"
d = "I ate %d apples. so I was sick for %s days"% (number, day)
# I ate 3 apples. so I was sick for three days

예시를 보면 %d는 숫자를, %s는 문자열을 넣을 때 사용한다는 것을 알 수 있습니다.

이외에도 몇 가지 포맷 코드가 있습니다. 

코드 설명
%s 문자열(String)
%c 문자 1개(Character)
%d 정수(Integer)
%f 부동 소수(Floating-point)
%o 8진수
%x 16진수
%% Literal %(문자 '%' 자체)

이때 %s 포맷 코드 같은 경우는 어떤 형태의 값이든 문자열로 바꿔서 삽입 가능합니다.