[독학 파이썬 정리] 파이썬 자료형에 대해 알아보고 있습니다.

2022. 8. 25. 21:27하고 싶은게 많군 그래?!/나도 해본다 파이썬

본 포스팅은 제가 파이썬 인강과 책을 보고 정리를 목적으로 하는 포스팅입니다. 이점 참고해주세요.

 

1. 들어가기 앞서

 

프로그래밍에서 프로그램이 처리할 수 있는 모든 것을 우리는 자료(Data)라고 부르고 프로그램은 이런 자료를 처리하기 위한 모든 행위라고 생각할 수 있습니다. 당연히 파이썬에서도 많은 자료를 다루는데요. 이런 자료들을 기능과 역할에 따라 구분해 놓고 이른 구분된 종류를 자료형(Data Type)이라고 합니다. 

 

'그 프로그래밍 언어의 자료형을 이해할 수 있다면 이 그 언어의 절반을 터득한 것이나 다름없다.'라는 말이 있더군요. 이 말은 자료형은 프로그래밍의 기본이자 핵심이라는 표현 같습니다.

 

파이썬에서도 한 자료를 자료형에 맞게 모으고, 처리 과정을 거친 다음 더 큰 자료형을 만들고 이런 일련의 작업들이 모여 하나의 프로그램을 만들 수가 있는데 결국 이런 자료형을 충분히 이해하지 못하는 것은 기초공가 없이 건물을 짓는 것과 같다고 할 수 있을 것입니다.  

 

이에 초보인 저는 정신 똑바로 차리고 자료형을 접해야 할 것입니다. 

 

자료형의 종류엔 숫자(Number), 문자열(String) 그리고 불(Boolean) 등이 있습니다. 

 

 

2. 숫자형 (Number)

숫자형의 종류엔 정수와 실수 그리고 8진수와 16진수가 있습니다. 여기서 선생님은 정수와 실수 정도만 알면 된다고 하셨습니다. 

 

여기서 한가지 주의할 점이 있는데 0과 0.0이 다르다는 것입니다. 답은 소수점의 유무였는데요. 이 소수점의 유무로 인해 자료형이 달라지니 주의가 필요합니다. 

확인하니 0은 'int'로 0.0은 'flat'로 출력되는 것을 확인할 수 있습니다. 참고로 자료형의 타입을 확인하고자 하면 type( ) 함수를 사용하면 됩니다. 

 

다음으로 숫자와 숫자를 연결해서 적용할 수 있는 연사자를 살펴보겠습니다. 숫자형에서 활용 가능한 연산자는 사칙 연산자, 정수 나누기 연산자, 나머지 연산자, 제곱 연산자가 있습니다. 

 

사칙 연산자

 간단하네요. 익숙한 것들입니다. 실제 코드를 작성해봐도 어렵지 않기에 패스

 

정수 나누기 연산자 ( // )

이 친구는 숫자를 나눠서 소수점이 나오면 버려버리고 정수 부분만 남기는 연사자입니다. 

확인해 보니 소수점 이하는 버린 값이 나옴을 확인할 수 있었습니다. 

 

나머지 연산자 ( % )

이 친구는 나머지를 구하는 연산자인데, 내 인생에 나머지를 구한 적이 있었던가 생각 듭니다. 산수론 없었던 것 같은데 아무튼 있으니 한 번 확인해 보겠습니다. 

 한 번 확인해보니 이해가 조금 쉽게 됩니다. 몫은 3이고 나누고 남는 숫자인 나머지도 3입니다. 

 

제곱 연산자 ( ** )

숫자 몇 승이나 제곱을 표현할 때 키보드엔 제곱을 표현할 수 있는 표시가 없는 관계로 부득이하게 ' ** "로 표현한 게 아닌가 싶습니다. 이 친구도 한 번 확인해 보겠습니다. 

2의 2승(제곱)을 해보니 정확하게 4 나오는군요. 

 

여기서 만약 여러 가지 연산자가 혼재되어 사용하게 되면 과연 어떻게 될까 한번 확인해 보고 싶습니다. 물론 수학은 못해도 산수는 그래도 어렵지 않게 하는 자로썬 답은 알고 있으나 그래도 이왕이면 한번 파이썬으로 실행해보는 것도 나쁘지 않아 보입니다. 

종이에 계산을 한 결과와 동일한 결과가 나왔는데요. 그런데 여기서 궁금한 게 *와 /가 같이 쓰이면 어떻게 될지 한번 해보고 싶은 생각이 듭니다. 저는 이 부분이 약간은 헷갈리는데요. 

390이 나왔는데요. 아무래도 무리하게 계산을 한 거 같네요. 다시 한번 더, 

*와 /만으로 이뤄진 연산은 순서대로 하면 됨을 알게 되었습니다. 그리고 책에는 연산자 순위가 헷갈릴 때는 괄호로 감싸는 게 좋다고 친절히 말하고 있었습니다. 

 

 

3. 문자열 (String)

파이썬은 글자들이 나열되어 있는 것을 '문자열'이라고 합니다. 내용을 공부하면 큰따옴표, 작은따옴표 심지어 세 따옴표도 등장하는데요. 자주 사용하다 보면 자연스레 숙지하게 되는 부분이라 가볍게 넘어갑니다. 

쉬운 거 같습니다. 그런데 여기서 문제는 문자열 내부에 따옴표를 넣어야 할 일이 발생할 수도 있다는 것입니다. 이럴 땐 가방 외곽을 두르는 따옴표의 형식과 중복되지 않은 따옴표를  사용하면 됩니다. 

 

만약에 같은 따옴표들로 프로그램을 짤 때 우리는 이스케이프 문자를 사용해서 문자열을 만들면 됩니다. 

 

이스케이프 문자 (Escape Character)는 역슬래시( \ )를 덧붙여 사용됩니다. 사용방법은 따옴표 전에 ' \ '붙여주기만 하면 됩니다. 

작은따옴표로 이뤄진 문자열에 이스케이프 문자를 넣어보니 원하는 답이 출력되었습니다. 

 

이런 편리한 이스케이프 문자는 기껏 따옴표만을 위해 존재하는 게 아녔습니다. 이스케이프 문자는 방금 본 '작은따옴표 또는 큰따옴표를 그대로 사용할 때' 뿐만 아니라  '줄을 바꿀 때', '탭 간격을 줄 때', '\를 그대로 사용할 때' 등등에 용도로 사용한다고 하는데요. 평소에 자주 사용하는 것은 몇 가지 되지 않는다고 합니다.

 

이를 정리해보면 ( \n : 줄 바꿀 때 사용), (\t : 문자열 사이 탭 간격을 줄 때 사용), (\' : 작은따옴표 그대로 쓸 때, 큰 따옴표도 동일함), (\\ : \ 를 그대로 사용할 때) 등 5가지 정도만 자주 사용한다고 해요. 이것도 뭐 억지로 외우지 말라고 하네요. 자연스럽게 습득될 거라고 말이죠. 

 

4. 문자열 연산자

문자열 연산자 앞서 살펴본 더하기 곱하기 연산자를 사용할 수 있는데요. 종류로는 '문자열 연결 연산자(+)', '문자열 반복 연산자(*)', '문자 선택 연산자 인덱싱 ([ ])', '문자열 범위 선택 연산자 슬라이싱( [ : ] ) 등이 있습니다. 

 

문자열 연결 연산자( + ) / 문자열 반복 연산자 ( - )

확인해보니 어떤 역할을 하는지 알 듯싶습니다. 그런데 호기심에 빼기 연산자를 사용하니 바로 에러 메시지가 뜨네요. 이 빼기 연산자도 혹시 다른 방법을 이용하면 사용할 수 있지 않을까 의심이 들었지만 일단 배우질 않았기에 넘어갑니다. 

 

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

이 연산자는 문자열 내의 문자 하나를 선택하는 연산자입니다. 사용 방법은 대괄호( [ ] ) 안에 선택할 문자의 위치를 지정하면 됩니다. 이때의 숫자는 인덱스(Index)라고 합니다. 

여기서 0을 넣으니 '문'이라는 값이 나왔는데 프로그래밍 언어에는 인덱싱 유형이 두 가지가 있는데 'Zero Index', 'One Index' 두 종류가 있어서 파이썬은 이 '제로 인덱스'를 사용하는데요. 그냥 우리 같은 초보는 문자열의 첫 번째 글자 위치를 0으로 규정한다로 이해하면 될 거 같습니다. 

 

이 인덱싱은 글자 열 맨 뒤에서부터도 가능한데 그때는 0부터 시작하는 게 아니라 -1로 사용한다고 이해하면 될 거 같습니다. 

 

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

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

 뭐 이런 식으로 사용하는데요. 보니깐 출력은 됐는데 빈 공란으로 출력되는 경우도 있습니다. 찾아보니 공란도 위치로 인식한다고 합니다. 또 이 슬라이싱에서 추가적으로 알아야 하는데요. 예를 들어 [ : 5]나 [2 : ] 등과 같이 사용할 수 있는데요. 전자는 왼쪽에서 오른쪽으로 0번에서부터 4번에  문자까지, 후자는 2번 문자에서부터 끝까지입니다. 참 문자열 범위 선택 연산자에서 [0:3]에서 3은 3번 문자까지 추출하는 게 아니라 바로 앞 2번 문자까지 추출함도 기억해야 합니다. 헷갈리더라고요. 아직은...

 

오늘은 여기까지 합니다. 초보가 포스팅을 하는데 마치 강사님이 가르치려는 말투가 나와서 글 쓰는 내내 불편하기도 합니다. 그리고 정리를 잘해보고자 쓰는 포스팅인데 의외로 빼먹는 부분도 있고 뒤죽박죽인 부분도 있네요. 포스팅 부담은 없지만 좀 더 간결하게 남겨놓아야 할 것 같습니다 이유는 복습용이기 때문이죠. 

 

다음엔 나머지 자료형과 미비했던 거 위주로 포스팅하려고 합니다.