OX 10문항 + 5지선다형 10문항
문자열은 변경 불가능한 자료형입니다. 기존 문자열 자체를 고치는 것이 아니라, replace나 strip 같은 메서드는 새 문자열을 만들어 반환합니다.
s = 'python'
print(s)
print(id(s))
s = s.upper()
print(s)
print(id(s))
python
Python
문자열은 불변 자료형이므로 인덱스로 특정 문자를 직접 바꿀 수 없습니다. 바꾸려면 슬라이싱이나 replace로 새 문자열을 만들어야 합니다.
s = 'abc'
try:
s[1] = 'B'
except TypeError:
print('문자열은 직접 수정 불가')
문자열은 직접 수정 불가
split은 지정한 구분자를 기준으로 문자열을 나눕니다. apple에는 p가 연속으로 두 번 나오므로 p와 p 사이의 빈 부분이 빈 문자열로 포함됩니다.
result = 'apple'.split('p')
print(result)
['a', '', 'le']
len은 문자열의 문자 개수를 셉니다. 안녕하세요는 한글 5글자로 이루어져 있으므로 결과는 5입니다.
s = '안녕하세요'
print(len(s))
5
strip은 양쪽 공백을 제거한 새 문자열을 반환합니다. 원본 문자열은 그대로이며, 결과를 사용하려면 변수에 다시 저장해야 합니다.
s = ' python '
t = s.strip()
print('원본:', repr(s))
print('결과:', repr(t))
원본: ' python '
결과: 'python'
find는 찾는 문자열이 없을 때 오류를 내지 않고 -1을 반환합니다. 그래서 존재 여부를 안전하게 확인할 때 사용할 수 있습니다.
s = 'python'
print(s.find('a'))
-1
index는 찾는 문자열이 없으면 -1이 아니라 ValueError를 발생시킵니다. find와 index의 중요한 차이입니다.
s = 'python'
try:
print(s.index('a'))
except ValueError:
print('ValueError 발생')
ValueError 발생
split()에 구분자를 지정하지 않으면 공백을 기준으로 나눕니다. 문자열에 공백이 없으므로 전체 문자열이 하나의 원소가 됩니다.
s = '1,2,3'
print(s.split())
print(s.split(','))
['1,2,3']
['1', '2', '3']
join은 구분자를 각 요소 사이에 넣습니다. 맨 앞에는 붙지 않으므로 결과는 a*b*c입니다.
result = '*'.join(['a', 'b', 'c'])
print(result)
a*b*c
f-string은 문자열 앞에 f를 붙이고 중괄호 안에 변수나 식을 넣어 값을 쉽게 삽입하는 포매팅 방식입니다.
name = '인수'
age = 17
print(f'{name}의 나이는 {age}세입니다.')
인수의 나이는 17세입니다.
슬라이싱 [7:12]는 7번 인덱스부터 11번 인덱스까지 가져옵니다. Hello, world!에서 7번부터 11번까지는 world입니다.
s = 'Hello, world!'
print(s[7:12])
world
strip은 문자열의 왼쪽과 오른쪽 끝에 있는 공백을 제거합니다. 왼쪽만 제거하려면 lstrip, 오른쪽만 제거하려면 rstrip을 사용합니다.
s = ' python '
print(repr(s.strip()))
print(repr(s.lstrip()))
print(repr(s.rstrip()))
'python'
'python '
' python'
replace는 첫 번째 인자로 받은 문자열을 두 번째 인자로 받은 문자열로 바꾼 새 문자열을 반환합니다.
s = 'python'
print(s.replace('p', 'P'))
Python
join은 리스트의 문자열 요소들을 하나의 문자열로 합칩니다. 앞의 문자열은 요소 사이에 들어갈 구분자입니다.
words = ['Life', 'is', 'short']
sentence = ' '.join(words)
print(sentence)
Life is short
슬라이싱에서 step이 -1이면 문자열을 뒤에서 앞으로 읽습니다. 그래서 전체 문자열이 거꾸로 뒤집힙니다.
s = 'abcde'
print(s[::-1])
edcba
문자열 앞에 f를 붙이고 중괄호 안에 변수나 표현식을 넣는 방식입니다. 가독성이 좋아 현대 파이썬에서 많이 사용합니다.
name = '지훈'
age = 16
print(f'제 이름은 {name}이고, 나이는 {age}입니다.')
제 이름은 지훈이고, 나이는 16입니다.
startswith는 문자열이 특정 문자열로 시작하는지 검사하여 True 또는 False를 반환합니다.
filename = 'image.jpg'
print(filename.startswith('image'))
print(filename.endswith('.jpg'))
True
True
isdigit은 문자열이 숫자 문자로만 이루어져 있는지 확인합니다. "42"는 숫자로만 구성되어 있으므로 True입니다.
s = '42'
print(s.isdigit())
print(int(s) + 8)
True
50
len은 문자열에 포함된 문자의 개수를 반환합니다. abc는 a, b, c 세 글자이므로 3입니다.
s = 'abc'
print(len(s))
3
find는 찾는 값이 없으면 -1을 반환하고, index는 ValueError를 발생시킵니다. 프로그램 흐름을 안전하게 처리하려면 이 차이를 알아야 합니다.
s = 'python'
print(s.find('x'))
try:
print(s.index('x'))
except ValueError:
print('index는 오류 발생')
-1
index는 오류 발생