본문 바로가기
Programming/파이썬 문법 (점프 투 파이썬)

[02장] 파이썬 프로그래밍의 기초, 자료형 (1) - 숫자형/문자열/리스트

by 수박주스으 2023. 9. 16.

02-1. 숫자형

: 숫자 형태로 이루어진 자료형

정수 int 1, 2, -2, 0
실수 float 1.24, -34.56
컴퓨터식 지수 표현 방식 (이것도 실수) 4.24e10, 4.24e-10
8진수 (octal) 0o37
16진수 (hexadecimal) 0x7A

기본적으로 정수와 실수 2가지만 알고 있어도 충분하다.

 

◎  숫자형 활용 연산

+, -, *, / 사칙연산 : 덧셈, 뺄셈, 곱셈, 나눗셈
x ** y x의 y제곱
ex) 3**4 : 3의 4승
//  몫 구하기
ex) 7 // 4 -> 1
% 나머지 구하기
ex) 7 % 3 -> 1

 

2. 문자열 (string)

: 문자, 단어 등으로 구성된 문자들의 집합

"Life is too short, You need Python"
"a"
"123"

 

◎ 문자열을 만드는 방법

파이썬에는 문자열을 만드는 방법이 총 4가지가 있다.

작은 따옴표, 큰 따옴표 어느 것을 사용해도 무방하며

다만 주의할 점은 따옴표의 짝을 맞춰야한다.

작은 따옴표, 큰 따옴표의 혼용은 안된다.

# 1. 큰 따옴표로 양쪽 둘러싸기
"Hello World"

# 2. 작은 따옴표로 양쪽 둘러싸기
'Python is fun'

# 3. 큰 따옴표 3개를 연속으로 써서 양쪽 둘러싸기
"""Life is too short, You need python"""

# 4. 작은 따옴표 3개를 연속으로 써서 양쪽 둘러싸기
'''Life is too short, You need python'''

 

 

◎ 문자열 안에 따옴표 포함하기

# 1. 문자열에 작은 따옴표 포함 -> 큰 따옴표 사용
food = "Python's favorite food is perl"

# 2. 문자열에 큰 따옴표 포함 -> 작은 따옴표 사용
say = '"Python is very easy." he says.'

# 3. 역슬래시 사용
food = 'Python\'s favorite food is perl'
say = "\"Python is very easy.\" he says."

 

◎ 여러 줄의 문자열을 변수에 대입하기

# 1. 이스케이프 코드 \n 활용
multiline = "Life is too short\nYou need python"

# 2. 연속된 따옴표 3개
multiline='''Life is too short
You need python'''

multiline="""Life is too short
You need python"""

print(multiline)을 입력하면

다음과 같은 결과가 나오는 것을 알 수 있다.

 

* 이스케이프 코드 : 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'

\n : 줄바꿈

\t : 탭

\\ : \를 그대로 표현

\', \" : '와 "를 그대로 표현  

 

◎ 문자열 연산

1. 더하기 : 문자열을 연결

head = "Python"
tail = " is fun!"
head + tail

결과 : Python is fun!

 

2. 곱하기 : 문자열의 반복

a = "python"
a * 2

결과 : pythonpython

 

◎ 문자열 길이 구하기 : len

- length를 의미

a = "Life is too short"
len(a) # 17

- 길이에는 공백 문자도 포함

 

◎ 문자열 인덱싱과 슬라이싱

1. 인덱싱 : 문자열 안의 특정 값에 번호를 붙이고 뽑아내는 것

a = "Life is too short, You need Python"

가 있다고 해보자. 문자열 안의 각 문자가 가지는 번호는 다음과 같다.

따라서,

a[0] : 'L'

a[1] : 'i'

a[2] : 'f'

a[3] : 'e'

a[4] : ' '

......

이렇게 번호를 가진다. 

중요한 건 ★ 파이썬은 0부터 숫자를 센다 ★는 것이다.

 

뒤에서부터 읽을 수도 있는데, 이때는 빼기('-') 기호를 붙여준다.

a[-1] :  'n'

a[-2] : 'o'

a[-5] : 'y'

* a[-0]은 a[0]과 같은 값이다.

 

2. 슬라이싱 : 문자열을 덩어리로 뽑아내는 것

a[ 시작번호 : 끝번호 ]

a[ 시작번호 : 끝번호 : 간격]

이때 주의할 점은 끝 번호에 해당하는 문자는 포함하지 않는다.

 

위의 예시를 통해 살펴보면 다음과 같다.

a = "Life is too short, You need Python"
print(a[0:4]) # 'Life'
print(a[0:3]) # 'Lif'

a[0:4]는 0이상 4미만, 즉 a[0]부터 a[3]까지의 문자를 의미하고 (0 <= a < 4)

a[0:3]은 0이상 3미만, 즉 a[0]부터 a[2]까지의 문자를 의미한다. (0 <= a < 3)

 

<슬라이싱 응용>

- 슬라이싱할 때 항상 시작 번호가 0일 필요는 없다.

a[5:7] # is
a[12:17] # short

- 끝 번호 부분을 생략하면 시작 번호부터 끝까지 뽑아낸다.

a[19:] # You need Python

- 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아낸다.

[a:17] # Life is too short

- 시작 번호, 끝 번호 모두 생략하면 문자여르이 처음부터 끝까지 뽑아 낸다.

a[:] # Life is too short, You need Python

- 슬라이싱에도 -(빼기) 기호를 사용할 수 있다.

a[19:-7] # You need

위의 예시에서는 a[-8]까지를 의미함. a[-7]은 포함X

 

◎ 문자열 포매팅

: 문자열 안에 어떤 값을 삽입하는 방법

 

1. % 사용

"I eat %d apples." % 3			# I eat 3 apples.
"I eat %s apples." % "five"		# I eat five apples.

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

 

<문자열 포맷 코드>

%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% % 문자 자체

여기서 %s는 어떤 형태의 값이든 변환해 넣을 수 있다. % 뒤에 정수가 오든 , 실수가 오든 문자열로 바꾸어 대입한다.

 

2. format 함수 이용

"I eat {0} apples".format(3)		# I eat 3 apples
"I eat {0} apples".format("five")	# I eat five apples

# 2개 이상의 값 넣기
number = 10
day = "three"
"I ate {0} apples. so I was sick for {1} days.".format(number, day)	# 결과 : I ate 10 apples. so I was sick for three days.

마지막 2개 이상의 값 넣기 예제는

"I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)

처럼 name=value 형태로 사용이 가능하다.

 

중괄호 { } 를 문자 그대로 사용하고 싶을 경우 {{ }}처럼 2개를 연속해서 사용한다.

"{{ and }}".format		# { and }

 

3. f 문자열 포매팅

- 파이썬 3.6버전부터 사용 가능 

- 이것만 기억하면 문자열 포매팅은 끝! 가장 깔끔한 최신 문법임.

name = '홍길동'
age = 30
f'나의 이름은 {name}입니다. 나이는 {age}입니다.'	# 나의 이름은 홍길동입니다. 나이는 30입니다.

 

표현식을 지원하기 때문에 중괄호 안에서 연산도 가능하다.

age = 30
f'나는 내년이면 {age + 1}살이 된다.'	# 나는 내년이면 31살이 된다.

 

 

** 문법을 달달 외우는 건 비효율적

 

◎ 문자열 관련 함수(메서드)

count 문자 개수 세기
find 특정 문자가 처음으로 나온 위치 반환. 찾는 문자가 없을 경우 -1 반환
index 특정 문자가 처음으로 나온 위치 반환. 찾는 문자가 없을 경우 오류 출력
join 문자열의 각 문자 사이에 특정 문자(열) 삽입
upper 소문자 -> 대문자
lower 대문자 -> 소문자
lstrip 왼쪽 공백 지우기
rstrip 오른쪽 공백 지우기
strip 양쪽 공백 지우기
replace 문자열 교체. replace(바뀔 문자열, 바꿀 문자열)
split 문자열 나누기. 
- 디폴트 값 : 공백
- 특정 문자를 기준으로 쪼개고 싶을 때, split 안의 괄호에 문자를 삽입한다. ex: split(':')
- 쪼개면 리스트 형태로 나온다.

 

3. 리스트

= 서랍.

대괄호 []를 사용하고, 각 요솟값은 쉼표(,)로 구분해준다.

odd = [1, 3, 5, 7, 9]

 

서로 다른 타입의 값을 포함할 수 있다.

ex) e = [1, 2, 'Life', 'is']

 

◎ 인덱싱과 슬라이싱

리스트의 인덱싱과 슬라이싱 문법은 문자열과 유사하다.

 

 

◎ 리스트 연산

+ 리스트 추가
* 리스트 반복

 

 

◎ 리스트 길이 구하기 : len

a = [1, 2, 3]
len(a)	# 3

 

* string : 문자열 (문자 + 리스트(배열))

* char : 문자

 

◎ 리스트의 수정과 삭제

리스트 안의 값은 자유롭게 수정과 삭제가 가능하다.

 

- 수정

a = [1,2,3]
a[2] = 4	# a -> [1, 2, 4]

 

- 삭제

a = [1,2,3]
del a[1]	# a -> [1,3]

del a[x] : x번째 요솟값 삭제

 

 

◎ 리스트 관련 함수

append 리스트에 요소 추가. 
- 맨 뒤에 추가함. 리스트도 추가 가능
sort 리스트 정렬 (숫자 뿐만 아니라 문자도 정렬 가능)
reverse 리스트 뒤집기
index(x) x의 인덱스 값 반환
insert(a, b) 리스트의 a번째 위치에 b값 삽
remove(x) 리스트에서 첫 번째로 나오는 x를 삭제
pop 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제
* pop(x) : x번째 인덱스 값을 pop
count(x) 리스트 안에 있는 x의 개수
extend(x) 리스트 확장 (x에는 리스트만 올 수 잇음)

 

 

※ 참고 자료

동영상 강의 : https://youtu.be/zAkAZjmnS3c?list=PLU9-uwewPMe05-khW3YcDEaHMk_qA-7lI 

위키 독스 : https://wikidocs.net/12