[Python-basic][Data type] 숫자
숫자
자료형과 연산자
파이썬에서 숫자의 자료형으로 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
댓글남기기