본문 바로가기

Lecture/Python Quest

Python Quest 3: Data types

강의주제:

1) PC: bits, bytes, kilobytes, megabytes, gigabytes, terabytes, petabytes

2) Python: types of variables

 

예전에 말했던 이진수(binary)로 돌아가서 보면, 기본적으로 컴퓨터는 0과 1만을 사용해 자료를 표현한다고 했다.

그래서 ascii라고 하는 표준이 생겨 우리가 흔히 다루는 abcde를 숫자로 치환하는 것이 가능해졌다고 말했다.

숫자로 표현한다는 것은 그것을 컴퓨터가 알 수 있는 binary로 표현이 가능하다는 것이다.

컴퓨터가 다루는 단위를 우리는 bit 이라고 표현한다.

이 bit들이 모여 더 큰 숫자를 표현하는 것이 가능하다.

하나의 bit은 2가지를 표현할 수 있다 (0 or 1)

두개의 bits는 2가지를 2가지 표현하므로 총 4가지를 표현할 수 있다. (00, 01, 10, 11)

세개의 bits는 두개의 비츠에 2가지를 더 표현하므로 8가지

네개의 bits는 16가지, 5개=32가지...

bits가 늘어나는 만큼 2를 곱한것만큼 표현이 가능하다.

1 bit  = (0, 1), 2
2 bits = (00, 01, 10, 11), 2x2 = 4
3 bits = (000, 001, 010, 011, 100, 101, 110, 111) 2x2x2 = 8
4 bits = 2x2x2 x2 = 16
5 bits = 2x2x2x2 x2 = 32
...

bit가 8개가 모이면 총 256개를 표현할 수 있고, 우리는 그걸 byte라고 한다.

1 byte는 컴퓨터 용량의 기본 단위이다. 왜냐하면 (영문)글자를 하나 표현할 수 있는 단위이기 때문이다.

ascii는 총 128개의 문자가 숫자로 지정되어 있으며 거기에 128개의 특수문자가 포함되어 총 256개의 문자가 숫자로 지정되어있다.

byte가 여러개 모여 1024개가 되면 우리는 kilobyte라고 부른다.

kilo는 보통 1000 이라는 단위로 사용하는데, 컴퓨터는 binary이고, 2의 10제곱 (\(2 ^ {10} \)) 인 1024를 kilo로 본다.

즉 1 kilobyte = 1024 bytes.

 

같은 의미로 1 megabyte (MB)는 = 1024 kilobytes, 1 gigabyte (GB)는 1024 megabytes다.

 

단위를 나열하자면

1 byte (B) = 8 bits
1 kilobyte (KB) = 1024 bytes
1 megabyte (MB) = 1024 kilobytes (1,048,576 bytes)
1 gigabyte (GB) = 1024 megabytes (1,073,741,824 bytes)
1 terabyte (TB) = 1024 gigabytes (1,099,511,627,776 bytes)
1 petabyte (PT) = 1024 terabytes (1,125,899,906,842,624 bytes)

최근에 갑자기 유명해진 블랙홀 사진을 찍고 확인하는 데에 5 PT 만큼의 자료가 필요했다고 했는데, 이걸 바이트로 환산하면 얼마나 큰 수인지 알 수 있겠다.

black hole picture
total of 5 petabytes worth of hard disks

바이트에 대해선 이정도로 하기로 하고 파이썬으로 돌아와보자

 

지난시간의 자료형을 조금 더 확장해보자.

 

파이썬에서 정하는 기본적인 자료의 형태는 크게 숫자, 문자, 그리고 집합으로 나눌 수 있겠다.

 

숫자는 말그대로 자료의 형태가 수의 형태를 가진다.

숫자에는 정수 (integer)와 실수 (float) 로 나뉜다.

 

정수는 우리가 아는 0을 포함한 자연수와 음수를 말한다. 1, 2, 3, 0, -1, -2, -3...

실수는 정확히 설명하려면 복잡하니 간단하게 소숫점을 가진 숫자를 말한다. 3.14, 1.234...

 

다른 언어와는 달리 파이썬은 변수에게 자신의 자료형이 무엇인지 알려주지 않아도 자기가 스스로 안다.

a = 30 		# integer
b = 2.5		# float

여기에 허수를 표현하는 complex 타입이 있는데, 이건 지금은 건너뛰자. 고등학교 수학시간에 허수를 배우면 그때 다루기로 하자.

 

문자는 문자열 (string)과 문자 (character)를 굳이 차별하지 않는다. 자료의 형태가 문자라는 것을 알려주기 위해서는 따옴표 ( ' ' single quote) 혹은 쌍따옴표 ( " " double quote)를 사용해야 한다.

c = 'Python is fun'		# string
d = "Hughble Log"		# string

집합의 형태에는 네가지가 있다.

list, tuple, set, dictionary

 

네가지 모두 변수에 여러 값을 가지는 형태이다.

 

리스트는 대괄호 ( [ ] sqaure bracket)로 표현한다. 리스트의 요소들은 순서를 가지고, 요소를 변경할 수 있다.

무슨 말인고 하니 요소의 첫번째를 0번, 두번째를 1번... 이렇게 숫자로 접근이 가능하다. 그리고 그 값을 변경하고 싶으면 변경이 가능하다.

튜플은 괄호 ( ( ) round bracket)로 표현한다. 리스트와 비슷하게 순서를 가진다. 접근을 위해서는 대괄호를 사용한다.

차이점은 요소의 내용을 변경할 수 없다는 점이다.

list1 = ["Alligator", "Bee", "Chameleon"]	# List
list1[1] = "Batman" 				# Bee becomes Batman

tuple1 = ("Alligator", "Bee", "Chameleon")	# Tuple
tuple1[1] = "Batman" 	# Error!

숫자로 접근이 가능하다는 것은 우리가 자료를 관리할 때 조금 더 쉽게 이용이 가능하다는 것이다. 나중 퀘스트에 차근차근 배우자.

 

set과 dictionary는 모두 중괄호 ( { } curly bracket) 를 사용하며 둘 다 순서가 없다. 이 말은 각각의 요소에 접근하기 위해서는 그 요소를 정확히 알려주어야 한다.

둘의 차이점은 set 은 초기화 과정이 리스트나 튜플과 비슷하고 자료 dictionary 는 요소의 키와 자료를 콜론 (:)으로 나누어 지정해야 한다.

set1 = {"Alligator", "Batman", "Chameleon"} 	# set
print("Batman" in set1)		# to access, use 'in' keyword

dictionary1 = {		# dictionary
	"A" : "Alligator"
    "B" : "Batman"
    "C" : "Chameleon"
}
print(dictionary1["A"])		# access value by using [] brackets and key.

 

오 많다.. 일단 이런 것들이 있다는 것 정도만 알아두자.

 

다음 퀘스트에서는 문법을 공부해보자.

'Lecture > Python Quest' 카테고리의 다른 글

Python Quest 5: Loop (while, for)  (0) 2019.06.03
Python Quest 4: If Else  (0) 2019.05.17
Python Quest 2: Variables  (0) 2019.04.25
Python Quest 1: 파이썬 설치, Hello World  (0) 2019.04.22