python 자료형

WorkFace·2025년 2월 10일

숫자형

숫자형의 종류

정수형 (integer)

정수형 이란 정수를 뜻하는 자료형을 말한다.

a = 123
a = -178
a = 0

실수형 (floating-point)

실수형은 소수점이 포함된 숫자를 말한다.

a = 1.2
a = -3.45

숫자형을 활용하기 위한 연산자

사칙연산

a = 3
b = 4
a + b

7
a - b

-1
a * b

12
a / b

0.75

x의 y제곱을 나타내는 **연산자

a = 3
b = 4
a ** b

81

나눗셈 후 나머지를 리턴하는 %연산자

7 % 3

1
3 % 7

3

나눗셈 후 몫을 리턴하는 //연산자

7 / 4

1.75
7 // 4

1

문자열 자료형

문자형의 사용법

1. 큰 따옴표("")로 양쪽 둘러싸기

"Hello world"

2. 작은 따옴표('')로 양쪽 둘러싸기

'Python is fun'

3. 큰 따옴표("")세개를 연속으로 써서 양쪽 둘러싸기

"""Life is too short, You need python"""

4. 작은 따옴표('')세개를 연속으로 써서 양쪽 둘러싸기

'''Life is too short, You need python'''

문자열 안에 작은따옴표나 큰따옴표 포함시키고 싶을 때

1. 문자열에 작은따옴표 포함하기

Python's favorite food is perl

food = "Python's favorite food is perl"
print(food)

"Python's favorite food is perl"
  • 문자열 중 Python's에 작은따옴표(')가 포함되어 있다. 이 경우에는 문자열을 큰따옴표로 둘러싸야 한다. 큰따옴표 안에 들어 있는 작은따옴표는 문자열을 나타내기 위한 기호로 인식되지 않는다.
food = 'Python's favorite food is perl'
  File "<stdin>", line 1
    food = 'Python's favorite food is perl'
                   ^
SyntaxError: invalid syntax
  • 'Python'이 문자열로 인식되어 구문 오류(SyntaxError)가 발생한다.

2. 문자열에 큰따옴표 포함하기

"Python is very easy." he says.

say = '"Python is very easy." he says.'
print(say)

"Python is very easy." he says.
  • 작은따옴표 안에 사용된 큰따옴표는 문자열을 만드는 기호로 인식되지 않는다.

3. 역슬래시를 사용해서 작은따옴표와 큰따옴표를 문자열에 포함하기

food = 'Python\'s favorite food is perl'
say = "\"Python is very easy.\" he says."
  • 역슬래시를 작은따옴표나 큰따옴표 앞에 삽입하면 역슬래시 뒤의 작은따옴표나 큰따옴표는 문자열을 둘러싸는 기호의 의미가 아니라 '나 " 자체를 뜻하게 된다.

여러 줄인 문자열을 변수에 대입하고 싶을 때

Life is too short
You need python

1. 줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기

multiline = "Life is too short\nYou need python"
  • 줄바꿈 문자인 \n을 삽입하는 방법이 있지만, 읽기가 불편하고 줄이 길어지는 단점이 있다.

2. 연속된 작은따옴표 3개 또는 큰따옴표 3개 사용하기

multiline ='''
	life is too short
    You need python
    '''
multiline ="""
	life is too short
    You need python
    """
print(multiline)

Life is too short
You need python

문자열 연산

1. 문자열 더해서 연결하기

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

'Python is fun!'
  • "Python"이라는 head 변수와 " is fun!"이라는 tail 변수를 더한 것이다. 결과는 'Python is fun!'이다

2. 문자열 곱하기

a = "python"
a * 2

'pythonpython'
  • a * 2라는 문장은 a를 2번 반복하라는 뜻이다.

3. 문자열 길이 구하기

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

17
  • 문자열의 길이는 len 함수를 사용하면 구할 수 있다. (문자열의 길이에는 공백 문자도 포함된다.)

문자열 인덱싱과 슬라이싱

1. 문자열 인덱싱

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

  • "Life is too short, You need Python" 문자열에서 L은 첫 번째 자리를 뜻하는 숫자 0, i는 1 이런 식으로 계속 번호를 붙인 것이다.
a = "Life is too short, You need Python"
a[3]

'e'
a[0]:'L', a[1]:'i', a[2]:'f', a[3]:'e', a[4]:' ', ...
  • **** 파이썬은 0부터 숫자를 센다 ****

2. 문자열 인덱싱 활용하기

a = "Life is too short, You need Python"
a[0]
'L'

a[12]
's'

a[-1]
'n'
  • a[-1]은 뒤에서부터 세어 첫 번째가 되는 문자를 말한다. a의 값은 "Life is too short, You need Python" 문자열이므로 뒤에서부터 첫 번째 문자는 가장 마지막 문자 'n'이다.
a[-0]
'L'
a[-2]
'o'

a[-5]
'y'

3. 문자열 슬라이싱

a = "Life is too short, You need Python"
b = a[0] + a[1] + a[2] + a[3]
b
'Life'
  • 이렇게 접근 할 수 도 있지만 파이썬에서는 슬라이싱 기법으로 더욱 간단하게 처리할 수 있다.
a = "Life is too short, You need Python"
a[0:4]
'Life'
  • a[0:4]는 a 문자열, 즉 "Life is too short, You need Python" 문자열에서 자리 번호 0부터 4까지의 문자를 뽑아 낸다는 뜻이다.

하지만 ‘a[0]은 L, a[1]은 i, a[2]는 f, a[3]은 e이므로 a[0:3]으로도 Life라는 단어를 뽑아 낼 수 있지 않을까?’라는 의문이 생길 것이다. 다음 예로 확인해 보자.

a[0:3]
'Lif'
  • 이렇게 되는 이유는 슬라이싱 기법으로 a[시작번호:끝번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않기 때문이다.
0 <= a < 3

4. 문자열 슬라이싱하는 방법

a[0:5]
'Life '
  • 슬라이싱할 때 항상 시작 번호가 0일 필요는 없다.
a[0:2]
'Li'
a[5:7]
'is'
a[12:17]
'short'
  • a[시작번호:끝번호]에서 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아 낸다.
a[19:]
'You need Python'
  • a[시작번호:끝번호]에서 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아 낸다.
a[:17]
'Life is too short'
  • a[시작번호:끝번호]에서 시작 번호와 끝 번호를 생략하면 문자열의 처음부터 끝까지 뽑아 낸다.
a[:]
'Life is too short, You need Python'
  • 슬라이싱에서도 인덱싱과 마찬가지로 -(빼기) 기호를 사용할 수 있다.
a[19:-7]
'You need

5. 슬라이싱으로 문자열 나누기

a = "20230331Rainy"
date = a[:8]
weather = a[8:]
date
'20230331'
weather
'Rainy'
  • "20230331Rainy" 문자열을 날짜를 나타내는 부분인 '20230331'과 날씨를 나타내는 부분인 'Rainy'로 나누는 방법을 보여 준다.
a = "20230331Rainy"
year = a[:4]
day = a[4:8]
weather = a[8:]
year
'2023'
day
'0331'
weather
'Rainy'
  • "20230331Rainy"를 연도인 2023, 월과 일을 나타내는 0331, 날씨를 나타내는 Rainy까지 세 부분으로 나누는 방법이다.

문자열 포매팅

"현재 온도는 18도입니다."
"현재 온도는 20도입니다"
  • 두 문자열은 모두 같은데 20이라는 숫자와 18이라는 숫자만 다르다. 이렇게 문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해 주는 것이 바로 문자열 포매팅이다.

1. 숫자 바로 대입하기

"I eat %d apples." % 3
'I eat 3 apples.'
  • 문자열 안의 숫자를 넣고 싶은 자리에 %d 문자를 넣어 주고 삽입할 숫자 3은 가장 뒤에 있는 % 문자 다음에 써 넣었다. 여기에서 %d는 ‘문자열 포맷 코드’라고 부른다.

2. 문자열 바로 대입

"I eat %s apples." % "five"
'I eat five apples.'
  • 문자열 안에 또 다른 문자열을 삽입하기 위해 앞에서 사용한 문자열 포맷 코드 %d가 아닌 %s를 썼다. 어쩌면 눈치 빠른 독자는 숫자를 넣기 위해서는 %d, 문자열을 넣기 위해서는 %s를 써야 한다는 사실을 눈치챘을 것이다.

3. 숫자 값을 나타내는 변수로 대입

number = 3
"I eat %d apples." % number
'I eat 3 apples.'
  • 1번처럼 숫자를 바로 대입하든, 숫자 값을 나타내는 변수를 대입하든 결과는 같다.

4. 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.'
  • 2개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 쉼표(,)로 구분하여 각각의 값을 넣어 주면 된다.

문자열 포맷 코드

  • %s 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.
"I have %s apples" % 3
'I have 3 apples'
"rate is %s" % 3.234
'rate is 3.234
  • 3을 문자열 안에 삽입하려면 %d를 사용해야 하고 3.234를 삽입하려면 %f를 사용해야 한다. 하지만 %s를 사용하면 %s는 자동으로 % 뒤에 있는 3이나 3.234와 같은 값을 문자열로 바꾸어 대입하기 때문에 이런 것을 생각하지 않아도 된다.

format 함수를 사용한 포매팅

1. 숫자 바로 대입

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

2. 문자열 바로 대입

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

3. 숫자 값을 가진 변수로 대입

number = 3
"I eat {0} apples".format(number)
'I eat 3 apples'

4. 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.'

5. 이름으로 넣기

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

6. 민덱스와 이름을 혼용해서 넣기

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

f문자열 포매팅

name = '홍길동'
age = 30
f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • f 문자열 포매팅은 위와 같이 name, age와 같은 변숫값을 생성한 후에 그 값을 참조할 수 있다. 또한 f 문자열 포매팅은 표현식을 지원하기 때문에 다음과 같은 것도 가능하다.
age = 30
>>> f'나는 내년이면 {age + 1}살이 된다.'
'나는 내년이면 31살이 된다.
  • 중괄호 안의 변수를 계산식과 함께 사용할 수 있다.
d = {'name':'홍길동', 'age':30}
f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • 딕셔너리는 Key와 Value라는 것을 한 쌍으로 가지는 자료형이다.
y = 3.42134234
f'{y:0.4f}'  # 소수점 4자리까지만 표현
'3.4213'
f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'
  • 소수점은 이렇게 표현 할 수 있다.
f'{{ and }}'
'{ and }'
  • f 문자열에서 {}를 문자 그대로 표시하려면 다음과 같이 2개를 동시에 사용해야 한다.

문자열 관련 함수들

1. 문자 개수 세기 - count

a = "hobby"
a.count('b')
2

2. 위치 알려 주기 - find

a = "Python is the best choice"
a.find('b')
14
a.find('k')
-1

3. 위치 알려 주기2 - index

a = "Life is too short"
a.index('t')
8
a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
  • find 와 index의 차이점

find 함수는 문자열 안에 포함되지 않는 문자를 찾으면 -1을 반환한다. index함수는 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다는 것이다

4. 문자열 삽입 - join

",".join('abcd')
'a,b,c,d'
  • join 함수로 abcd 문자열의 각각의 문자 사이에 ‘,’를 삽입했다.

join 함수는 문자열뿐만 아니라 앞으로 배울 리스트나 튜플도 입력으로 사용할 수 있다(리스트와 튜플은 곧 배울 내용이므로 여기에서는 잠시 눈으로만 살펴보자). join 함수의 입력으로 리스트를 사용하는 예는 다음과 같다.

",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'

5. 문자열 바꾸기 - replace

a = "Life is too short"
a.replace("Life", "Your leg")
'Your leg is too short'

6. 문자열 나누기 - split

a = "Life is too short"
a.split()
['Life', 'is', 'too', 'short']
b = "a:b:c:d"
b.split(':')
['a', 'b', 'c', 'd']
  • split 함수는 a.split()처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백([Space], [Tab], [Enter])을 기준으로 문자열을 나누어 준다. 만약 b.split(':')처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다. 이렇게 나눈 값은 리스트에 하나씩 들어간다. ['Life', 'is', 'too', 'short']나 ['a', 'b', 'c', 'd']가 리스트인데, 02-3에서 자세히 알아볼 것이므로 여기에서는 너무 신경 쓰지 않아도 된다.

0개의 댓글