숫자자료형,
우리가 흔히 사용하는 그 숫자를 담는 자료형이 바로 숫자 자료형입니다.
숫자자료형에는 3가지가 있었는데,
정수, 실수, 복소수에 따라서 각각 int, float, complex자료형이 있습니다.
참고로 이들 자료형은 클래스이며, 그렇기에 객체와 메소드(클래스상의 함수)가 있기도 합니다. 클래스에 대해서는 나중에 나옵니다.
int는, 정수(integer)형 자료형 으로, 부호가 있는 정수 숫자(1, 23, -4)들이 여기에 속합니다.
(python3 이전 버전에서는 32비트의 저장공간을 차지하며, 범위도 약-21억~21억만큼이고, 대신에 long이라는 자료형으로 메모리가 허락하는 선에서 무제한의 범위를 사용할 수 있었는데, python3으로 오면서 long자료형이 없어지고, 대신에 int가 long같이 크기제한이 없어졌다고 합니다.)
int() 함수도 있는데, 인자값(함수의 괄호안에 들어가는 값)을 int 자료형으로 반환합니다. 실수를 넣으면 소수점 아래 숫자는 짤려서(절사되서) 반환됩니다.
a = 1
b = 0
c = -9
print(a, type(a), b, type(b), c, type(c))
참고로 type() 함수는 인자값(함수의 괄호안에 들어가는 값)으로 변수를 전달받으면 그 변수의 자료형을 반환하는 함수입니다.
여기서 int자료형은 10진수뿐만아니라 8진수(0o)와 16진수(0x), 2진수(0b)형식으로도 숫자를 대입할 수 있습니다.
다만 출력형식에서는 기본 숫자 출력방식이 10진수기에 출력결과로 여러진수의 숫자들이 10진수로 변환된 값을 볼 수 있습니다.
f = 0o12 # 8진수(0o 아니면 0O)
g = 0x12 # 16진수(0x 아니면 0X)
# 2진수도 0b 아니면 0B 을 맨앞에 붙여주고,
# 뒤에는 진수에 맞는 숫자표현을 써준다면 사용가능합니다.
print(f, type(f), g, type(g))
출력할 때, 다른 진수로 출력하고 싶다면 문자열 포맷팅을 이용하면 됩니다.
float는, 실수(floating-point)형 자료형 으로, 소수점 아래의 숫자(2.3, 1.45, -8.0)들의 형식입니다.
소수점 아래의 숫자에도 15자리까지 유효자릿수의 한계가 있는데, 그 이후에서는 오차가 발생합니다.
컴퓨터의 실수표현방식인 부동소수점 방식으로도 실수를 대입할 수 있습니다! (4.2E1)
d = -4.2
e = 4.2E1
print(d, type(d), e, type(e))
출력할 때, 부동소수점 방식으로 출력하고 싶다면, 마찬가지로 문자열 포맷팅을 이용하세요.
float() 함수도 마찬가지로 있는데요, 인자값을 float자료형으로 변환해 반환합니다.
float() 함수를 이용해 특별한 수도 대입할 수 있는데요.
nan(Not A Number), 불가능한 수나 inf(infinite), 양의 무한도 float('nan'), float('inf')와 같이 해서 대입해줄 수 있습니다. 추가로 -inf로 해서 음의 무한도 대입할 수 있답니다.
n1 = float('nan')
n2 = float('inf')
print(n1, type(n1), n2, type(n2))
complex는 복소수(complex-number)형 자료형 으로, 수학에서 배운 허수부분(i)까지를 포함하는 수(2+3i)를 저장합니다. 근데 특이하게도 수학처럼 i기호 대신에 j 혹은, J를 허수기호로 사용합니다.
(전기/전자공학에서 i, I는 전류기호로 쓰이기에 중복을 막는 j를 쓴다는데 파이썬도 그렇게 쓰나 봅니다.)
h = 2 + 3j
print(h, type(h))
complex() 함수로 숫자나, 복소수가 담긴 문자열을 복소수로 변환해서 반환할 수 있습니다.
대신 깐깐한 조건이 붙는데, 문자열에서 +사이에 공백이 존재하면 에러가 납니다. (complex('3+ 3j') -> 에러!)
그리고도 complex(숫자, 숫자)같이 하면, 인자값들이 실수부, 허수부에 들어간 복소수가,
complex(숫자)같이 하면, 인자값이 실수부에 들어간, 허수부는 0인 복소수가 만들어집니다.
complex(n) -> n+0j, complex(n, m) -> n+mj, complex('n+mj') -> n+mj
complex가 나름 구조가 있는 숫자자료형이다보니 이와 관련된 객체나 함수가 있는데요.
.real을 complex변수 뒤에 붙이면 실수부만 반환되고, .imag를 붙이면 허수부가 반환됩니다.
.conjugate()함수를 뒤에 붙이면 컬레복소수(허수부분 부호바꿈)가 반환됩니다.
abs()함수에 변수를 인자값으로 넘기면(괄호안에 넣으면), 그 복소수의 절대값이 반환됩니다.
h = 2 + 3j
print(h.real, h.imag, h.conjugate(), abs(h))
산술연산자
수학의 기본적인 연산자들도 파이썬에서는 숫자를 다룰때 사용할 수 있는데요,
+, -, /, * 더하기, 빼기, 나누기, 곱하기 같은 사칙연산자 뿐만아니라,
% : 나머지 연산자
(5%2 -> 1)
// : 몫 연산자
나누기(/)와의 차이는, 몫(//)은 항상 정수로 나누어떨어지고,
나누기(/)는 정수/정수의 연산이여도 값이 실수라면, 실수로 처리됩니다.
(5//2 -> 2)
** : 제곱 연산자
(2**3 -> 8)
과 같은 연산자들도 사용할 수 있습니다.
(참고로 정수(int)와 실수(float)사이의 연산결과는 표현범위가 넓은 실수로 나옵니다.)
위에서 배운 연산자를 응용한다면,
i = 1j
print(i, i**2, i**3, i**4)
complex 변수에 제곱연산자(**)를 이용해서 허수의 성질이 컴퓨터에도 적용되는 것을 간단히 확인할 수 있습니다.
한 포스팅 안에, 세가지 자료형 int, float, complex에 대해 알아보고, 이들사이에 쓰이는 산술연산자까지 알아보았습니다.
특히 숫자자료형에서의 짜잘한 규칙, 기능들을 잘 활용한다면, 파이썬에서 지원하는 숫자자료형의 기능들을 100% 발휘할 수 있을지 않을까 싶습니다.
다음시간에서는 논리형에 대한 자료형인 bool과 그와 연관되는, 비교, 연산자와 논리, 맴버, 식별연산자 까지 알아보도록 하겠습니다.
'파이썬(Python) > 문법' 카테고리의 다른 글
파이썬의 기본연산자 (2) | 2020.02.20 |
---|---|
자료형 - 2. 논리자료형 bool (0) | 2020.02.20 |
파이썬의 자료형 종류 (0) | 2020.02.08 |
파이썬 기본문법, 코드작성 규칙(PEP8) (0) | 2019.07.23 |
파이썬 설명, 설치 (0) | 2019.07.23 |