3. 자료형(data types)- 숫자 numbers
*본 게시물은 21-2학기 연세대학교 일반대학원 온라인데이터수집과분석(이상엽 교수님) 수업 내용을 정리한 것입니다.
앞선 게시물에서 데이터 타입에는 6개가 있다고 말씀드렸습니다. 숫자, 리스트, 문자열, 딕셔너리, 튜플, 집합인데 여기서는 먼저 숫자에 대해 정리하려 합니다.
1. 숫자 종류(4)
(1) 정수(int; integer)
보편적으로 생각하는 그 숫자입니다. 자연수와 0, 그리고 음의 정수 모두를 말합니다.
-1000, -23, 0, 1, 2, 100000000... |
(2) 소수(float; floating point numbers)
소숫점 달린 애들입니다.
-3.141592, -1.1, 0.00001, 2.4 |
(3) 복소수(complex numbers)
실수(real number)와 허수(imaginary number)의 합으로 표현된 숫자입니다. 다만 이번 학기 수업에서는 복소수는 사용되지 않습니다.
-5+3i, 1-i, 3+4i ... |
(4) 불린(Boolean)
True, False로 표현됩니다. 또한 True는 1로, False는 0으로 간주됩니다.
1
2
3
4
5
6
7
|
a= True #만일 변수 a에 불린 True 를 할당한다면,
type(a) #변수 a의 타입은 True의 타입인 'bool'이 됩니다.
b = False #마찬가지로 변수 b에 불린 False를 할당한다면,
type(b) #변수 b의 타입도 'bool'이 됩니다.
True*10 #10; 또한 불린 True는 python에서 True==1로 간주됩니다.
False*10 #0; python에서 False==0으로 간주됩니다.
|
cs |
True*10 #10; 또한 불린 True는 python에서 True==1로 간주됩니다. False*10 #0; python에서 False==0으로 간주됩니다.
이 때 주의할 점은 따옴표 안에 들어간 'True'와 'False'는 문자열(string)이 된다는 것입니다. 즉 불린으로써의 자질을 잃고 문자열이 되어버립니다.
1
2
3
4
5
6
|
c= 'True' #문자열임을 나타내는 작은 따옴표 안에 있기 때문에 문자열이 됩니다.
type(c) #str; 따라서 True를 bool로 쓰려면, 작은 따옴표 없이 사용하여야 합니다.
#예시
x= [1,2,1.2] #뒤에 나오는 리스트 데이터입니다.
sorted(x, reverse=True) #reverse에 달린 True에 작은 따옴표가 없음을 확인할 수 있습니다.
|
cs |
#예시 x= [1,2,1.2] #뒤에 나오는 리스트 데이터입니다. sorted(x, reverse=True) #reverse에 달린 True에 작은 따옴표가 없음을 확인할 수 있습니다.
2. 연산자(arithmetic operators)
숫자 종류를 배웠으니 숫자를 계산하는 방법을 배워야겠죠? 컴퓨터를 만든 이유가 '계산기'이니 당연히 사칙연산+@이 가능합니다.
+ | 덧셈(addition) |
- | 뺄셈(subtraction) |
* | 곱셈(multiplication) |
** | 지수, 승(exponentiation) |
/ | 나눗셈(division) 중 몫+나머지 모두를 보여줌 |
//(floor division) | 나눗셈(division) 중 몫만 보여줌 *floor: 어떤 숫자에 대해 같거나 작은 수 중 가장 큰 정수 |
%(residual, remainer) | 나눗셈(division) 중 나머지만 보여줌 |
나머지는 익숙한데, 나눗셈들이 특히 헷갈립니다. 저 같은 경우는 //는 몫+나머지에서 나머지를 한번 더 칼질(?)한다는 느낌으로 외웠고, %의 경우는 땡땡이들만 있으니 나머지만 보여주는구나 생각해서 외웠습니다.ㅋㅋ
실제 코드로 보면 다음과 같습니다.
1
2
3
|
10/3 #단순한 나누기이므로 3.3333333333333335 가 나옵니다.
10//3 #몫(같거나 작은 정수 중 가장 큰 정수)만 나오는 나누기이므로 3이 나옵니다.
10%3 #나머지가 나오는 나누기므로 (3*3)+1, 1이 나옵니다.
|
cs |
%는 언제 쓰일까 싶기도 한데, A라는 수가 B의 배수인지 혹은 C, D가 짝수인지 홀수인지를 판단하는 코드를 작성할 때 쓰인다고 합니다. 생각해보니 그렇네요... 배수라면 %가 0이 될 것이고, 짝수라면 2로 나눴을 때 %이 0, 홀수면 1이 나오네요.
지금까지는 /, //, %를 자연수에만 사용을 했는데, 양수인 실수나 음수에 적용하면 어떻게 될까요? 문과인 저로서는 매우 헷갈리는 결과들이 나왔습니다 ㅋㅋ. 특히 //(floor division)이 헷갈렸는데, '같거나 작은 정수 중 가장 큰 정수'를 앞으로 기억해야 할 것 같습니다.
1
2
3
4
5
6
7
8
9
|
#양의 실수
6.3/2 #3.15
6.3//2 #3.0 ; 소수(float)라 그런지 몫도 소숫점이 붙어서 표현되는 것을 볼 수 있습니다.
6.3%2 #0.2999999999999998
#음의 실수
-2.3/2 #-1.15
-2.3//2 #-2.0 ; '같거나 작은 정수' 중 가장 큰 정수이니, -1보다는 작은 정수 '-2'가 나옵니다.
-2.3%2 #1.7000000000000002
|
cs |
지수(승수)도 코드로 나타내면 다음과 같습니다. 또한 변수에 저장된 숫자 값으로도 연산자 계산이 가능합니다.
1
2
3
4
5
6
7
8
|
2**5 #2^5이므로 32
#변수에 할당한 값으로도 사칙연산 계산이 가능합니다
a = 13
b = 5
a**b #13^5이므로 371293
a%b #(2*5)+3이므로 3
a//b #2
|
cs |