파이썬/파이썬 입문 공부일지

파이썬 공부일지 5. 문자열 연산자!

Tomitom 2022. 10. 11. 10:46
반응형

 

 

오늘도 공부를 시작해봅니다.. 아침에 학원 올 때 시간을 자꾸 놓쳐서 아침 식사를 못 하고 나와요. 

시리얼이랑 우유는 챙겼는데, 배고파서 점심까지 제정신을 유지할 수 있을지 모르겠습니다. 

아무튼 오늘부터는 연산자 공부!

 

 

문자열 연산자에 대해서 배워볼게요.

 

 

문자열 연결 연산자

+ 더하기 기호로 '숫자'를 더하거나 '문자열'을 연결할 수 있습니다.  (= 숫자를 더하거나, 문자열을 이어붙인다.) 

 

>>> 1+1      #숫자의 더하기 연산자
2
>>> "1"+"1"       #문자열의 연결하기 연산자
'11'

# 연산자는 + 이고  " 1 " 혹은 1 은 피연산자가 됩니다.

 

그럼 1+"1" 은 값이 어떻게 나올까요? 숫자+문자열 이 가능한지 해보면... 

역시 오류가 뜹니다. ^-^ 정수와 문자열을 더하는 것은 불가능해요.

 

 

TIP) 코딩을 할 때 에러 메세지가 뜨면 그걸 해석하는 것도 배워야 한다고 해요.

 

TypeError: unsupported operand type(s) for +: 'int' and 'str'

오류형     :   오류 메세지 

정수와 문자열을 더하는 것은 지원되지 않으므로 타입 에러!

 

 

문자열 반복 연산자 

* 곱하기 기호로 문자열을 반복할 수 있습니다.

 

>>> "화요일이다." * 3

화요일이다.화요일이다.화요일이다.

 

또 다시 일주일이 시작되었다 파이팅!

 

곱하기 기호는 앞이나 뒤, 어디다가 쓰든 같은 값을 얻어냅니다!

>>> 3 * "화요일이다."

화요일이다.화요일이다.화요일이다.

 

 

 

문자열 선택 연산자[인덱싱]

 

대괄호 [] 는 문자열 내부의 문자 하나를 선택하는 연산자 입니다. 

예를 들어 '빵떡호떡콩콩떡' 에서 중간에 있는 '호' 하나를 빼고 싶을 때 사용합니다.

문자열을 입력하면 자체적으로 인덱스가 부여됩니다.

프로그래밍 언어에서 인덱스는 두 가지의 유형으로 구분합니다. 

 

숫자를 0부터 세는 제로 인덱스

숫자를 1부터 세는 원 인덱스 

 

파이썬은 제로 인덱스를 사용하는 언어 입니다.

즉, 빵떡호떡콩콩떡 에서 문자열은 무조건 0부터 시는 거예요.

빵떡호떡콩콩떡

0  1  2  3  4  5  6 

 

중요! 공백도 문자에 해당하기 때문에 공백이 있다면 문자로 인식해서 숫자를 세야 합니다. 

빵떡 ^ 호떡 ^ 콩콩떡  일 경우 

0 1 2 3 4 5 6 7 8 이 되는 거예요. 

 

>> print("빵떡 호떡 콩콩떡"[0])

맛있어요..

 

뒤에서부터 선택하려면 양수가 아닌 음수로 선택하시면 됩니다. 마이너스 표기로요.

 

print("문자를 뒤에서부터 선택해볼게요.")
print("안녕하세요"[-1])
print("안녕하세요"[-2])
print("안녕하세요"[-3])
print("안녕하세요"[-4])
print("안녕하세요"[-5])

 

 

으로 선택이 됩니다. ^-^

 

 

 

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

 

문자열을 한 글자만 뽑는 것이 아니라 범위로 선택할 수도 있는데 이것을 슬라이싱 이라고 합니다. 

[ : ] 대괄호를 사용합니다.  대괄호 안에 콜론으로 구분해서 슬라이싱해요. 

 

프로그래밍 언어에서는 범위 지정할 때 두 가지의 유형이 있는데 

마지막 숫자를 포함하기  가 있고

마지막 숫자를 포함하지 않기  가 있습니다. 

 

파이썬은 마지막 숫자를 포함하지 않는 언어 입니다.

즉, 앞에 지정한 숫자부터 뒤에 지정한 숫자의 전까지 추출해요. 

 

그래서 '달모어 위스키 마시고 싶다' 라고 하는 문장에서 '위스키'를 슬라이싱 하고 싶다면

"달모어 위스키 마시고 싶다[4:7] 으로 입력하면 4,5,6 번째의 문자를 출력하게 됩니다. 

저는 이렇게 익숙해졌어요.

4번째 숫자부터 세 글자를 가져오고 싶으니까 4+3=7 이죠. 그래서 [4:7]

 

4:8 까지 한 바람에 공백까지 끌어왔네요...

숫자 하나를 생략해서 슬라이싱을 할 수 있습니다. 

[1:] : 1번째부터 끝의 문자까지 선택

[:3] : 처음 문자부터 뒤에서 숫자 3번째 앞의 문자까지 선택

[:] 전체 문자 선택

이런 식으로요.

 

 

즉 문자열 연산자를 정리하자면 다음과 같습니다. 

 

- 인덱싱 : 원하는 문자를 고르는 작업

- 슬라이싱 : 원하는 범위 만큼의 문자열을 고르는 작업

 

그렇다면 선택 연산자의 특징은 뭘까요?

인덱싱과 슬라이싱은 작업의 대상이 되는 문자열의 원본을 훼손하지 않습니다. 

인덱싱과 슬라이싱은 특정 부분을 복사하는 작업입니다. 

 

>>> "나는 커플"[-1]     # 라고 했을 때 원본을 그대로 두고 새로운 결과물을 복사해서 만들어내는 것이에요. 

 

나중에 변수를 지정할 때 도움이 된다고 합니다. 

 

 

다음은 Index Error 에 대해서 알아볼게요.  

Index Error 예외 (=오류)

인덱싱을 할 때 발생하는 에러예요. 

예를 들어 범위를 초과하는 숫자를 입력해서 복사하라고 하면 범위 에러가 뜹니다. 

에러가 났을 때 꼼꼼히 읽어보면 스스로 해결할 수 있다고 해요.

 

범위를 초과하지 않으려면 문자열의 길이를 알고 있어야겠죠. 

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

 

함수란 : 기능에다가 이름을 붙인 명령문

함수의 형태는 이름 뒤에 소괄호가 붙습니다. 

가령 print()  처럼요. 

len() 도 새롭게 등장하는 함수입니다. 

len("문자열") 을 입력하면, 문자열에 들어있는 문자의 개수를 세어 줍니다.

 

len 함수는 기본적으로 숫자를 세주는 기능만 있고, 출력하는 기능은 없습니다.  (대화형 셸에서는 그냥 써도 돼요! 에디터에서는 꼭꼭 출력 함수를 써야합니다.) 

그러므로 숫자를 세서 화면에 출력하려면  print(len()) 이렇게 사용하셔야 해요.

 

요러케요!

 

마치 엑셀 함수를 사용하는 것과 같죠? 

함수가 다중으로 중첩되어 사용되면 괄호 안쪽부터 먼저 실행됩니다.


슬라이싱 숫자 범위가 익숙하지가 않네요... ㅜㅠ

좋아요.. 다 숙지 했으니 이제 조금 쉬었다가 다음 공부로 넘어갑니당... 

 

반응형