[기초 문법] python 문법 2 / 자료형이란? / 자료형의 이해 / 정수 / 실수 / 문자열

2023. 7. 6. 02:28기본 코딩/python

파이썬에서 사용하는 자료형에 대해서 알아볼 수 있도록 하겠습니다.

 

1. 자료형이란 무엇인가?

2. 정수 자료형

3. 실수 자료형

4. 문자열 자료형

 

1. 자료형이란 무엇인가?

말 그대로 입니다. 자료의 형태가 자료형입니다. 심지어 영어로도 Data Type입니다. 파이썬은 자료형으로 정수/실수/문자열/리스트/튜플/딕셔너리/집합/불리언 이렇게 8개의 자료형을 가지고 있습니다. 근데 이게 끝이 아닙니다.

 

이 말을 이해하려면 파이썬은 모든 것이 클래스로 만들어져 있다. => 그럼 클래스는 뭐지? => 객체? 메소드? => 객체 지향? => ......????????????

 

그... 초반부터 싹 다 알려고 하면 배우는데 머리 아픕니다....

 

먼 길을 돌아서 결국 자료형이 무엇이냐 자료가 가지는 형식을 말합니다.

 

수학을 생각하면 쉽습니다.

수 체계
저도 잘 기억이 나지 않아 양해 부탁드리겠습니다.

여기서 양수는 +1, +2, +3, +4, ...... 와 같이 부호가 +인 친구들만 모아놓은 것 입니다. 형식이 일정하죠? +가 붙어있습니다.그래서 부호가 +이고 딱딱 떨어지는 수들을 보고 '아! 저건 양수다!' 라고 이야기 합니다.

 

파이썬의 자료형도 한 눈에 탁! 보고 '아아! 저건 OOO 자료형이다!' 라고 0.1초도 안 걸려서 이야기 할 수 있어야 합니다.

즉, 위의 말은 무엇이냐??  ====> "그냥 외워라~"

 

근데 이걸 시작부터 잘 외울 수 있느냐? 그렇지는 않습니다. 처음 배우거나 새로운 언어로 파이썬을 학습하는 과정이라면 이 과정은 굉장히 지루하고 재미가 너어어어어어어어어어어무 없는 것이 일반적인 사람의 느낌 입니다.

 

그렇다면 어떻게 해야하느냐 이때 이해하는 듯한 과정이 필요한 것입니다.

 

자료형의 사용법을 외우는데 이해하는 것은 굳이 필요한 부분이 아닙니다. 이해가 정말로 필요한 곳은 나중에 문법을 왠만큼 어느정도 다 학습을 하고 나면 문법을 외운 것을 가지고 그때 '내가 bfs라는 알고리즘을 배웠는데 파이썬의 어떤 문법이 어떤 기능을 하니까 알고리즘에 따라서 이때 이 문법을 사용하는 것이다.' 라고 이해하는 것이지 단순 사용법을 가지고 이해한다고 하는 것은 말이 되지 않습니다.

 

1+1이 왜 2인가? 또는 왜 2 + 2 + 2 + 2를 2 x 4로 표기하는가? 이렇게 당연하다고 생각되는 것을 왜 당연한지 질문하는 것과 같은 것입니다.

 

아까도 이야기 했다 싶이 그냥 외우면 재미는 물론 감동도 없고 보람도 없으니 하나 씩 예제를 들면서 '아! 이때 사용하는 것이구나~' 라는 느낌이 들면서 다양한 사용법을 알아보면서 자연스럽게 습득하여 외운다는 느낌이 안 들도록 하는 것이 가장 좋은 방법이라고 생각합니다.

 

이제 파이썬의 자료형을 알아보겠습니다.


2. 정수 자료형

정수 자료형은 우리가 익히 알고 있듯 -1, 0, 1 이런 식을 생겼습니다.

자료형을 변수 안에 담아놓는 것을 앞으로 굉장히 많이 할 텐데 변수의 자료형은 어떤 자료형이 담겨있는지에 따라서 달라지는 것입니다. 만약 a라는 변수에 123을 담아놓았다면 a라는 변수는 정수 자료형이 되는 것 입니다.

 

※ 정수 자료형을 사용하는 이유

이 자료형이 없다면 파이썬에서 1234라는 수를 우리가 아는 10진수를 표현할 수도 없으며 기본적인 사칙연산 또한 불가능 할 것 입니다.

 

이 자료형은 딱히 예시를 들어서 설명하는 부분이 크게 필요없는 자료형입니다.


3. 실수 자료형

정수 자료형은 -1, 0, 1이라면 실수 자료형은 소수점이 붙은 모오든 형태를 실수 자료형이라 합니다.

3.14는 당연히 실수 자료형이며 3.0 또한 3과 같은 의미이나 소수점이 붙었기 때문에 실수 자료형으로 구분합니다.

 

※ 실수 자료형을 사용하는 이유

이게 없다면 파이썬에서 원주율을 사용할 수 없으며 루트를 사용할 수 없을 것 입니다. 소수점이 필요한 경우에 사용되고 있습니다.

 

이 자료형은 딱히 예시를 들어서 설명하는 부분이 크게 필요없는 자료형입니다.


4. 문자열 자료형

파이썬을 학습하면서 굉장히 중요한 자료형 입니다.

나온 개념이 앞으로 또 나오기 때문에 굉장히 중요합니다.

 

※ 문자열 자료형을 사용하는 이유

이게 없으면 파이썬에서 글자를 못 씁니다.... 무조건 있어야 합니다....

 

문자열에서 알고 있어야 하는 내용입니다.

1. 문자열 만드는 방법

2. 문자열 연산

3. 문자열에서 하나 가져오기(접근)

4. 문자열에서 원하는 부분 여러 개 꺼내기(슬라이싱)

5. 문자열에서 사용하는 메소드(이후에 나오는 문법을 알고 있으면 충분히 구현 가능 그러나 이미 구현되어 있으니 이것을 사용하는 편이 나음)

6. 문자열에서만 동작이 가능한 특수기호(이스케이프 문자)

 

1. 문자열 만드는 방법

문자열을 만들기 위해서는 따옴표로 감싸면 됩니다. 따옴표를 이용하여 만들 수 있는 방법은 4가지가 있습니다.

'이렇게 그냥 따옴표 쓰거나'  -->  그냥 따옴표

"아니면 쌍따옴표 쓰거나"  --> 쌍따옴표

'''이렇게 3개를 연속으로 쓰는 방법이 있는데'''  -->  그냥 따옴표 3개

"""잘 보면 양쪽이 똑같은 따옴표를 쓰고 있습니다."""  -->  쌍따옴표 3개

 

만들었으면 변수에 저장이 가능합니다.

a = "Hello World!"
print(a)

b = """메밀꽃 필 무렵
여름 장이란 애시당초에 글러서,
해는 아직 중천에 있건만 장판은
벌써 쓸쓸하고 더운 햇발이 벌
놓은 전 휘장 밑으로 등줄기를
훅훅 볶는다.

마을 사람들은 거의 돌아간 뒤요,
팔리지 못한 나무꾼패가 길거리에
궁깃거리고들 있으나, 석유병이나
받고 고깃마리나 사면 족할 이 축
들을 바라고 언제까지든지 버티고
있을 법은 없다."""
print(b)

 

만드는 방식이 다 똑같게 느껴질 것 같으나 명확한 사용법이 있습니다. 따옴표나 쌍따옴표 한 개로 만들어지는 문자열은 한 줄을 표현할 때 사용합니다. 그러나 3개씩 있는 문자열은 여러 줄이 있는 글을 표현할 때 효과적으로 사용할 수 있습니다.

그래서 보통은 3개짜리 잘 안 사용합니다. 그치만 꼭 필요할 때 기억이 안나는 경우가 많아서 알고 있어야 합니다.

 

뭔가 새로운 사실을 알았으면 어딘가 정리해서 기록해두시길 바랍니다. 컴퓨터 하는 사람이라고 종이와 펜을 멀리 하시면 안됩니다.

 

2. 문자열 연산

연산이라고 하면 보통 숫자 연산만을 생각하는데 문자열도 연산이 가능합니다.

  • 문자열 붙이기(+)
  • 문자열 반복하기(*)

위 두 가지를 연산자를 통해 구현이 가능합니다.

a = "파이썬"
b = "재미있다."
c = "너무"
d = "어렵다."
f = "은"

# 문자열 붙이기
# 연산자로 +를 사용하며 양쪽에 문자열로된 자료형을 피연산자로 받는다.
print(a + f + ' ' + c + ' ' + b)

+ 기호를 숫자 자료형끼리 사용하면 수의 덧셈을 수행하지만 문자열끼리 + 연산을 하게 된다면 양쪽 피연산자들끼리 서로 달라 붙게 됩니다.

 

a = "이 편지는 영국에서 건너와...다섯 번 똑같이 쓰지 않으면 큰일납니다."
print(a * 5)  # 복사했음 ㅅㄱ

문자열을 반복하고 싶다면 문자열 * 정수 -> 이렇게 사용하면 정수만큼 문자열을 반복할 수 있습니다.

여기서 의문이 들수 있는데 이런 질문을 할 수도 있습니다. "어!?!? 정수를 곱하라고? 그럼 음수도 곱할 수 있냐?!"

이런거 해보는게 공부입니다. 어떤 결과가 나오는지 댓글로 알려주세요.


3. 문자열에서 하나 가져오기(접근)

택배회사에서 물건을 집으로 배달하려면 우리 집 주소를 알아야 합니다. 그래야 우리 집에 배달이 가능하지요.

이런 느낌과 비슷합니다. 컴퓨터에도 주소가 있는데 문자열과 같은 데이터는 메모리 공간에 저장이 됩니다. 이 메모리 공간의 주소는 서울특별시 강동구 이런식으로 우리가 알 수 있는 형식이 아닙니다. 그래서 인덱스의 개념이 등장합니다.

 

  !
0 1 2 3 4 5 6 7 8 9

만약 문자열 "저는 코린이입니다!" 라는 문자열이 str1이라는 변수에 저장이 되어 있다고 가정하겠습니다.

그리고 이 문자열에서 "코"라는 글자를 가져오고 싶으면 다음의 문법 형식을 따르면 됩니다.

 

문자열[인덱스]

그렇다면?

str1[3] -> 이렇게 하면 코라는 글자를 가지고 올 수 있습니다.

-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
  !
0 1 2 3 4 5 6 7 8 9

 

인덱스 번호는 항상 0부터 시작합니다. 사실 컴퓨터에서 숫자 시작은 "0부터 한다" 라고 봐도 무방합니다.

인덱스 번호는 뒤에서 시작하면 항상 -1부터 시작합니다. 

인덱스 번호는 단순히 위치를 가리키는 것일 뿐 아무 의미 없습니다.

str1 = "연습을 해봅시다."

# '연' 이라는 글자를 출력해보기
print(@@@)

# '시' 라는 글자를 출력해보기
print(@@@)

4. 문자열에서 원하는 부분 가져오기(슬라이싱)

여러 개의 문자열을 가져오는 것을 슬라이싱이라고 합니다. 이때도 인덱스 번호를 사용하여 "어디서 부터 어디까지 잘라라" 라고 표현해주면 됩니다.

"Hello World!"라는 문자열이 a라는 변수에 있다고 할 때 

"Hell" 이라는 문자열을 가져오고 싶다면 아래와 같은 문법 형식을 갖추면 됩니다.

 

문자열[처음: 끝+1]

그렇다면 a[0: 4]라고 한다면 Hell이라는 문자열을 가져올 수 있습니다.

 

사실 이 문법은 한 가지가 숨어있습니다.

문자열[처음: 끝+1: 간격]

 

간격이 숨어있습니다. 간격을 명시하지 않았을 경우 첫 번째 경우의 문법에 적용되는 것이며 간격을 명시해주면 두 번째 경우에 적용되는 것입니다. 간격을 명시하지 않으면 기본 값으로 1이 적용되는 것입니다.

 

예제를 통해 연습해보겠습니다.

str2 = "hello world!"

print(str2[0: 4])

# 아래 두 개는 같은 코드입니다.
print(str2[: 4])
print(str2[0: 4])

# 아래 세 개는 같은 코드입니다.
print(str2[6: ])
print(str2[6: 12])
print(str2[6: 100])

# 아래 세 개는 같은 코드입니다.
print(str2[: ])
print(str2[0: 12])
print(str2[-12: 0])

각 경우를 확인해보고 나온 결과는 다음과 같이 정리할 수 있습니다.

처음부터 가져오거나 끝까지 가져오는 경우에는 인덱스 자리를 비우는 것으로 표현이 가능하다.

 


5. 문자열에서 사용되는 메소드

파이썬이 문자열을 사용할 때 쓰라고 미리 만들어놓은 기능입니다. 

이게 진짜 많습니다.

다 외운다는 것은 말이 안될 것까진 없지만 굳이 외워야 하나? 싶은 느낌이 강하게 듭니다.

이 부분은 따로 정리해서 올리도록 하겠습니다.


6. 문자열에서만 동작이 가능한 특수 기호(이스케이프 문자)

문자열 안에서 어떤 코드를 넣으면 특수 기능이 동작합니다.

간략히 자주 쓰는 것만 알고 있으면 큰 무리 없이 사용가능할 것 같습니다.

\ -> 이 기호를 써야하는데 벡슬래시라고 읽기도 합니다.

이 기호는 키보드 마다 폰트 마다 기호가 다릅니다. 어떤 폰트는 원(화폐 단위) 표시할 때 기호와 같습니다.

 

\n -> 문자열 안에 넣고 출력해보면 그 부분에  Enter 가 쳐진 것을 볼 수 있습니다.

\t -> 문자열 안에 넣으면 일정 간격 떨어진 것을 볼 수 있습니다. 일반적으로 탭 키 누른 것과 동일한 기능입니다.

s1 = "안녕하세요\n저는 홍길동입니다."
print(s1)

s2 = "2x1=2\t2x2=4\n2x3=6\t2x4=8"
print(s2)

이 코드를 실행하면 어떤 느낌인지 확실히 이해할 수 있습니다.