본문 바로가기

자기계발/IT

[파이썬] '혼자 공부하는 파이썬' 독학 - Chapter 2 자료형 (2)

반응형

 

문자열 연산자

 

연산자는 특정한 자료의 형태에 종속된다.

'숫자'라는 자료에는 더하기, 빼기, 곱하기, 나누기라는 연산자를 적용할 수 있지만, 합집합, 교집합, 차집합이라는 연산자는 적용할 수 없다.

 

프로그래밍 언어의 자료들도 마찬가지.

숫자에는 숫자에만 적용할 수 있는 연산자가 있고, 문자열에는 문자열에만 적용할 수 있는 연산자가 있다.

 

문자열 연결 연산자: +

 

+기호로 문자열 연결 연산을 적용.

"문자열" + "문자열"

 

파이썬의 경우에는 '숫자 더하기 연산자'와 '문자열 연결 연산'를 같은 기호로 사용하지만, 내부적으로 완전히 다른 수행을 하는 연산자.

 

문자열 연결 연산자: 두 문자열을 연결해서 새로운 문자열을 만들어 내는 것.

print("안녕" + "하세요")
안녕하세요
print("안녕하세요" + "!")
안녕하세요!

"안녕하세요1"을 출력하려는 의도로 아래와 같이 +연산자를 사용하면 TypeError가 발생.

print("안녕하세요" + 1)

TypeError : can only concatenate str (not "int") to str 이라는 에러 메시지가 발생한다.

 

+연산자는 아래와 같이 사용해야 한다.

1. 문자열끼리

2. 숫자에 큰 따옴표를 붙여 사용

3. 숫자끼리

 

문자열 연결 연산자: *

 

문자열을 숫자와 *연산자로 연결하면 문자열 반복 가능.

문자열 반복 연산자: 문자열을 숫자만큼 반복해서 출력.

문자열 * 숫자 순

print("안녕하세요" * 3)
안녕하세요안녕하세요안녕하세요

숫자 * 문자열 순

print(3 * "안녕하세요")
안녕하세요안녕하세요안녕하세요

 

문자 선택 연산자(인덱싱): [ ]

 

문자 선택 연산자: 문자열 내부의 문자 하나를 선택하는 연산자. 대괄호[ ] 안에는 선택할 문자의 위치를 지정, 이 숫자를 인덱스(index)라고 부름.

 

프로그래밍 언어의 인덱스 유형

1. 제로 인덱스(zero index): 숫자를 0부터 셈.

2. 원 인덱스(one index): 숫자를 1부터 셈.

 

파이썬은 제로 인덱스(zero index) 유형을 사용함. 

문자열의 위치를 셀 때 무조건 0부터 셈. 첫 번째 글자가 0번째, 두 번째 글자가 1번째.

 

 안   녕    하   세   요

[0]   [1]   [2]   [3]   [4]

 

print("안녕하세요"[0])
안
print("안녕하세요"[1])
녕
print("안녕하세요"[2])
하
print("안녕하세요"[3])
세
print("안녕하세요"[4])
요

대괄호 안의 숫자를 음수로 입력하면 뒤에서부터 선택 가능.

print("안녕하세요"[-5])
안
print("안녕하세요"[-4])
녕
print("안녕하세요"[-3])
하
print("안녕하세요"[-2])
세
print("안녕하세요"[-1])
요

문자열 범위 선택 연산자(슬라이싱): [ : ]

 

문자열 범위 선택 연산자: 문자열의 특정 범위를 선택할 때 사용하는 연산자. 범위는 대괄호 안에 위치를 콜론으로 구분해서 지정.

print("안녕하세요"[1:4])
녕하세

프로그래밍 언어의 슬라이싱 유형

1. 범위 지정 시, '마지막 숫자를 포함'

2. 범위 지정 시, '마지막 숫자를 포함하지 않음'

 

파이썬은 범위 지정 시, '마지막 숫자를 포함하지 않음'으로 적용.

따라서 위의 예제에서 [1:4]로 범위를 지정했으므로, 마지막 4번째인 다섯 번째 글자인 '요'는 포함하지 않음.

print("안녕하세요"[0:2])
안녕
print("안녕하세요"[1:3])
녕하
print("안녕하세요"[2:4])
하세

 

문자열 범위 선택 연산자를 대괄호 안에 넣는 숫자 둘 중 하나를 생략하여 사용 가능.

뒤의 값을 생략할 때는 자동으로 가장 최대 위치(마지막 글자)까지, 앞의 값을 생략할 때는 가장 앞쪽의 위치(첫 번째 글자)까지 지정.

print("안녕하세요"[1:])
녕하세요
print("안녕하세요"[:3])
안녕하

 

인덱싱(indexing): [ ] 기호를 이용해 문자열의 특정 위치에 있는 문자를 참조하는 것.

슬라이싱(slicing): [ : ] 기호를 이용해 문자열의 일부를 추출하는 것.

 

중요! 문자열 선택 연산자로 슬라이스를 하더라도 원본은 변하지 않는다.

>>> hello = "안녕하세요"
>>> print(hello[0:2])
안녕

>>> hello
안녕하세요

해석

"안녕하세요"라는 문자열을 hello라는 저장 공간(변수)에 저장.

hello에 있는 문자열 줄 0,1번째 문자열을 추출해 출력.

hello를 입력해 hello라는 저장 공간(변수)에 들어 있는 값을 출력. "안녕하세요"가 그대로 있음. 슬라이싱이라는 처리를 해도 원본은 그대로 남아 있는 것을 확인 가능.

 

IndexError(index out of range) 예외

 

리스트/문자열의 수를 넘는 요소/글자를 선택할 때 발생.

>>> print("안녕하세요"[10])

"안녕하세요"는 다섯 글자인데, 10번째 문자에 접근하고 있어 IndexError: srting index out of range가 발생.

 

 

문자열의 길이 구하기

 

문자열의 길이를 구할 때는 len( )함수 사용.

괄호 내부에 문자열을 넣으면 '문자열에 들어있는 문자의 개수(=문자열의 길이)'를 세어 줌.

>>> print(len("안녕하세요"))
5

상기 예제와 같이 함수가 여러 번 중첩되어 사용되면 괄호 안쪽부터 먼저 실행됨.

 

 

다음 파이썬 포스팅

[파이썬] '혼자 공부하는 파이썬' 독학 - Chapter 2 자료형 (3)

반응형