2 분 소요

숫자

자료형과 연산자

파이썬에서 숫자의 자료형으로 integer와 float (floating point, 부동 소수점)가 있다.

다음의 연산자들이 있다

  • + 덧셈
  • - 뺄셈
  • * 곱셈
  • / 부동소수점 나눗셈 예) 7 / 2 = 3.5
  • // 정수 나눗셈 예) 7 // 2 = 3
  • % modulus (나머지) 예) 7 % 3 = 1
  • ** 제곱 예) 2 ** 3 = 8

숫자에서 가능한 표현법

a = 5
a -= 2  # a = a - 2
3

이 외 가능한 표현들

=, +=, *=, /=, //=

(실수에도 적용가능하다)

divmod(9, 5) —> (1, 4) (몫, 나머지)

진법 (base)

파이썬에서 10진법 외에 3종류의 진법을 표현할 수 있다.

  • 0b 또는 0B -> binary 2진법
  • 0o 또는 0O -> octal 8진법
  • 0x 또는 0X -> hex 16진법

이 숫자들이 print될 때는 10진법으로 print된다

a = 0b11
print(a)
3
a = 0o11
print(a)
9
a = 0x11
print(a)
17

이러한 진법은 비트 연산에 주로 쓰인다.

형 변환 (type conversion)

int()

다른 자료형에서 정수 자료형으로 변환시켜주는 함수

  • boolean to integer
>>> int(True)
1
>>> int(False)
0
  • float to integer
>>> int(12.5)  # 소수점 밑은 모두 버린다.
12
>>> int(1.0e4)
10000
  • string to integer
>>> int('33')
33
>>> int('-11')
-11
>>> int('+11')
11

단, 다른 문자들이 포함된 문자열은 에러를 일으킨다.

print(int('1잔 물이 필요해'))
#실행결과
예외가 발생했습니다. ValueError
invalid literal for int() with base 10: '1잔 물이 필요해' File "C:\python2\python_basic\study.py", line 1, in print(int('1잔 물이 필요해'))

물론 정수로 변환할 수 없는 것을 인수로 넣어도 에러가 발생한다.

또한, 소수점이 포함되거나 지수표기법으로 표시된 실수의 문자열은 int로 변환할 수 없다.

print(int('11.34'))
예외가 발생했습니다. ValueError
invalid literal for int() with base 10: '11.34' File "C:\python2\python_basic\study.py", line 1, in print(int('11.34'))

⇒ 해결책: 먼저 float() 함수를 이용해 해당 문자열을 실수형으로 변환한 후에 int() 함수를 사용한다.

print(int(float('11.34')))
11
  • int to int
>>> int(100)
100

숫자형이 서로 섞여있는 경우, 파이썬에서는 자동적으로 형 변환을 해준다.

>>> 2 + 23.0
25.0

boolean인 True, False는 각각 1, 0이기에 정수 및 실수와 섞여 연산될 경우, True, False 모두 1, 0으로 취급된다.

>>> True + 1
2
>>> False + 1.3
1.3

** int의 크기

파이썬 3부터는 int 사이즈에 제한이 없다. 2에서는 int가 32bit로 제한되어 있어서

-2,147,483,648 ~ 2,147,483,647까지의 숫자만 가능했다.

다른 언어에서는 컴퓨터가 허용한 것보다 더 큰 공간을 필요로 하는 숫자를 쓸 경우 interger overflow라는 현상이 나타나지만 파이썬에서는 제한이 없기에 아무런 문제가 없다.

float

다른 자료형에서 float형으로 변환하고자 한다면 float() 함수를 쓰면 된다.

  • boolean to float
>>> float(True)
1.0
>>> float(False)
0.0
  • integer to float
>>> float(11)
11.0
>>> float('12')
12.0
  • string to float
>>> float('11.2')
11.2
>>> float('-11.2')
-11.2
>>> float('1.0e4')
10000.0

Reference

[1] Bill Lubannovic, “Introducing Python”, (O’REILLY, 2015)

This content is licensed under CC BY-NC 4.0

댓글남기기