[Python] 1-1. 자료형과 문자열
저번 글에서는 Python을 입문하기 전에 꼭 알아야 할 기초적인 용어들을 정리했다.
이번 글에서는 프로그래밍에서 프로그램이 처리하는 자료(Data),
특히 Python에서 다루는 다양한 자료형(Data type)에 대해 알아보려고 한다.
1. 여러 가지 자료형
Python은 다양한 자료를 처리하는 언어다. 그중에서도 가장 기본적인 자료형은 다음과 같다:
- 문자열(string) : 문자로 이루어진 데이터 --> 블로그 글, 메시지, 뉴스 기사 등
- 숫자(number) : 수치로 표현되는 데이터 --> 키, 몸무게, 성적 등
- 불(bool) : 참(True)과 거짓(False)을 나타내는 자료형 --> 논리 연산, 비교 연산 등
이 외에도 다양한 자료형이 존재한다.
Python에서 특정 자료의 자료형이 무엇인지 알고 싶다면 type() 함수를 사용하면 된다.
name = '홍길동'
phone_number = 12345678
print(type(name))
print(type(phone_number))
# 출력 결과 : <class 'str'> (str = string, 즉 문자열을 의미)
# 출력 결과 : <class 'int'> (int = integer, 즉 정수를 의미)
type() 함수는 해당 자료가 어떤 자료형을 가지는지 알려준다.
2. 문자열
문자열(string)이란 문자들이 나열된 것으로, 텍스트 정보를 표현할 때 사용된다.
Python에서 문자열을 만드는 가장 간단한 방법 두 가지는 다음과 같다:
- 큰따옴표(")로 문자들을 감싸서 만들기
- 작은따옴표(')로 문자들을 감싸서 만들기
문자열을 만드는 것은 간단하지만, 문자열 내에 따옴표를 넣는 경우 실수가 발생할 수 있다.
print("나는 솔로 "그대좌" 10기 영식")
위의 코드를 실행할 경우 "SyntaxError : invalid syntax"와 같은 오류가 발생한다. 왜 그럴까?
1. Python은 문자열을 "..."로 감싸서 인식한다.
2. 그런데 지금은 "나는 솔로"까지만 보고 그게 문자열이라고 착각하고,
그다음 오는 "그대좌"는 문법적으로 말이 안 되는 부분으로 인식한다 --> 에러 발생
즉, 내가 원했던 것은 "그대좌"라는 단어를 강조하기 위해서 따옴표를 사용했지만
Python에서 제대로 인식하지 못하여 에러가 발생한다는 것이다.
이를 해결하기 위해서는 문자열에 넣고 싶은 따옴표와 다른 따옴표를 사용하면 된다.
print('나는 솔로 "그대좌" 10기 영식')
위와 같이 내가 해당 문자에 큰따옴표를 넣고 싶으면 작은따옴표로 전체 문자열을 감싸주면 에러 없이 해당 문자열을 출력할 수 있다.
(반대의 경우에도 똑같다)
또 다른 방법으로는 이스케이프 문자(escape character)를 사용하는 것이다.
이스케이프 문자(escape character)란 역슬래시(\ or ₩) 기호와 함께 조합해서 사용하는 특수한 문자를 의미한다.
다음과 같이 \와 함께 따옴표를 사용하면 단순한 따옴표로 인식하게 되어 사용에 편리하다:
- \" : 큰따옴표를 의미
- \' : 작은따옴표를 의미
print("나는 솔로 \"그대좌\" 10기 영식")
이렇게 하면 따옴표를 섞어서 사용했을 때와 같이 출력되는 것을 알 수 있다.
이외에도 여러 가지 이스케이프 문자가 존재한다:
- \n : 줄 바꿈
- \t : 탭
- \\ : 역슬래시
이 중 줄 바꿈(\n)을 사용하면 여러 줄 문자열을 만들 수 있다:
print("오늘 공부를 너무 많이 했다\n이번 중간고사는 친구들 중 내가 가장 성적이 높을 것이다\n제발 그랬으면 좋겠다\n ㅠㅡㅠ")
# 출력 결과
# 오늘 공부를 너무 많이 했다
# 이번 중간고사는 친구들 중 내가 가장 성적이 높을 것이다
# 제발 그랬으면 좋겠다
# ㅠㅡㅠ
그런데 위와 같이 코드를 짜면 코드 한 줄이 너무 길어 읽기가 힘들뿐더러 줄 바꿈 문자도 많아 보기에 좋지도 않다.
그래서 Python에서는 여러 줄 문자열이라는 기능을 지원한다.
여러 줄 문자열은 큰따옴표나 작은따옴표를 세 번 반복한 기호를 사용하여 나타낼 수 있다:
print("""
나는 이번 시험기간에 공부를 정말 열심히 했다.
자신이 넘친다.
세상에서 내가 제일 공부를 열심히 하는 것 같다.
"""
)
# 출력 결과
#
# 나는 이번 시험기간에 공부를 정말 열심히 했다.
# 자신이 넘친다.
# 세상에서 내가 제일 공부를 열심히 하는 것 같다.
#
이렇게 사용하면 줄바꿈 문자를 굳이 사용하지 않고, 깔끔하게 코드를 읽을 수 있다.
(출력 결과를 보면 위아래로 의도치 않게 줄 바꿈이 들어가는데 이를 없애고 싶으면 """\ ...... \""" 같은 형태로 역슬래시를 붙여주면 줄 바꿈을 없앨 수 있다.)
3. 문자열 연산자
문자열에도 여러 가지 연산자를 사용할 수 있다.
- + : 문자열과 문자열을 합칠 때 사용
- * : 원하는 문자열을 반복함
print('안녕하세요' + '!!')
# 출력 결과 : 안녕하세요!!
print('안녕하세요' * 3)
# 출력 결과 : 안녕하세요안녕하세요안녕하세요
4. 문자열 슬라이싱
문자열에는 각각 문자에 위치값이 지정되어 있는데, 이 숫자를 인덱스(Index)라고 부른다.
Python에서는 제로베이스 인덱스(zero-based index) 유형을 사용하고, 이는 숫자를 0부터 세면서 구분하는 것이다.
즉, "안녕하세요"라는 문자열이 있을 때,
안 : [0], [-5]
녕 : [1], [-4]
하 : [2], [-3]
세 : [3], [-2]
요 : [4], [-1]
이러한 형태로 문자열에 숫자가 지정되어 있다.(거꾸로 뽑고 싶을 땐 음수값을 사용하면 된다.)
대괄호([ ])를 사용해서 내가 원하는 인덱스의 범위에서의 글자만 뽑는 게 가능하다.
print('안녕하세요'[0])
# 출력 결과 : 안
print('안녕하세요'[0:3])
# 출력 결과 : 안녕하
print('안녕하세요'[1:])
# 출력 결과 : 녕하세요
여기서 주의해야 할 점은 슬라이싱을 할 때, [0:3]과 같은 경우에 0번째 인덱스부터 3번째 인덱스까지 뽑는 것이 아니라 그 앞인 2번째 인덱스까지 뽑는다는 걸 알고 있어야 한다.
5. 문자열의 길이
문자열의 길이를 구하고 싶을 땐 len() 함수를 사용하면 된다.
print(len('아싸호랑나비'))
# 출력 결과 : 6