파이썬 자료형 – 숫자형 (Numbers)

파이썬 자료형 – 1편 숫자형(Numbers)

numbers

파이썬 언어 자체에서 제공하는 자료형이자 모든 프로그래밍 언어의 기본이 되는 숫자형에 대해서 설명하겠습니다. 숫자형은 수학시간에 배워서 다들 친숙하시리라 생각됩니다. 파이썬에서 지원하는 숫자형은 아래와 같습니다.

-5, 1, 789, 1024 와 같은 정수형(integers)

일상에서 흔히 사용하는 숫자형입니다.

3.1415, 907e10과 같은 실수형 (floating-point)

소수점을 나타낼 때 사용합니다.?(부호)(가수)(E혹은 e)(지수) 형태로 나타내는 IEEE754 표기법도 지원합니다.

7+3j 와 같은 복소수형(complex)

파 이썬처럼 복소수형을 언어 자체에서 지원하는 것이 파이썬의 장점 중 하나입니다. 널리 사용되는 C도 C99 표준에 와서야 정의되었고 Java는 아직도 언어 자체에서 지원하지 않아서 별도의 라이브러리를 사용해야 합니다. 수학에서 복소수를 a+bi 형태로 표기하지만, 파이썬에서는 i 대신 j (혹은 J)로 표기하는 점이 다릅니다.

>>> a = 5+3j
>>> a
(5+3j)

a+bi 같은 표기 외에 complex(a, b) 형식으로 표기할 수 있습니다. 5+3i 는 complex(5, 3)과 동일합니다.


>>> a = complex(5, 3)
>>> a
(5+3j)

복소수의 실수부는 .real 을 사용하면 얻을 수 있고, 허수부는 .imag 를 사용하면 얻을 수 있습니다.


>>> a = 5+3j
>>> a.real
5.0
>>> a.imag
3.0

0b111와 같은 2진수 (binary)

2진수를 표현할 때 사용합니다. 0B 혹은 0b (숫자 0 + B혹은 b) 로 시작하면? 파이썬에서는 이를 2진수로 인식합니다.

>>> a = 0b11
>>> a
3

한 가지 주의할 점은 (당연하겠지만) 2진수이기 때문에 0B 혹은 0b 뒤에 오는 숫자는 오직? 0과 1뿐이어야 합니다. 그 이외의 숫자가 들어오면 SyntaxError 가 발생합니다.

0o11과 같은 8진수 (octal)

8진수를 표현할 때 사용합니다. 0o 혹은 0O (숫자 0 + O 혹은 o) 를 적은 후 0~7사이의 숫자를 적어주면 파이썬에서는 이를 8진수로 인식합니다.

>>> a = 0O11
>>> a
9

2진수와 같이 0O 혹은 0o 뒤에? 0~7 이외의 숫자가 들어오면 SyntaxError 가 발생합니다.

0xFFF, 0x9B와 같은 16진수(hexadecimal)

16진수를 표현할때 사용합니다. 0x 혹은 0X (숫자 0 + x 혹은 X)를 적은 후 0~9, A~F(혹은 a~f) 를 적어주면 파이썬에서는 이를 16진수로 인식합니다.


>>> a = 0xff

>>> a

255

0~9, A~F(혹은 a~f) 이외의 문자나 숫자가 들어오면 SyntaxError 가 발생합니다.

이상 파이썬 자료형 그 중 숫자형에 대해서 알아봤습니다. 파이썬에서 제공하는 자료형은 타 언어 대비 굉장히 다양하고 유용하기 때문에 잘 알아두시기 바랍니다.

숫자형의 연산

숫자형의 연산은 굉장히 직관적입니다. 기본적인 사칙연산(+, -, *, /)을 지원하며 제곱(**), 나머지 연산(%)도 지원합니다.


>>> a = 123
>>> b = 456
>>> a + b
579
>>> b - a
333
>>> f = 0.123
>>> f * 2
0.246
>>> b % a
87
>>> 10 ** 2
100

나 누기 연산은 조금 주의해야 할 필요가 있습니다. 파이썬 2.7과 3.x 대의 결과가 다르기 때문인데요. 456을 123을 나누면 3.7073…. 라는 결과가 나오기를 기대하지만 실상은 아닙니다. 파이썬 2.7은 정수형끼리의 나누기 연산의 결과는 정수형으로 보여줍니다. 따라서, 파이썬 2.7의 결과는 3이 나오고 파이썬 3.x 의 결과는 3.7073… 이 나옵니다. 파이썬 3.x 와 같은 결과를 원한다면 나누기 연산의 피연산자 2개 중 하나를 실수형으로 형변환해야 합니다. 형변환은 별도의 섹션에서 설명하도록 하겠습니다.


>>> a = 123
>>> b = 456
>>> b / a
3
>>> float(b) / a
3.707317073170732
>>> b / float(a)
3.707317073170732

참고자료

  1. 파이썬 공식 문서

Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *