파이썬에서는 여러 종류의 숫자 타입을 제공하며, 각 타입은 고유한 특성과 용도를 가진다. 주요 숫자 타입은 정수형(int), 실수형(float), 복소수형(complex)이다.
1. 정수형 (Integer)
정수형은 소수점이 없는 숫자를 나타내며, 파이썬에서는 int 타입으로 정의된다. 정수형은 양수, 음수, 0을 포함하며, 파이썬 3에서는 정수의 크기가 메모리의 한계 내에서 무제한으로 확장된다.
a = 10
b = -5
c = 0
print(a, type(a)) # 출력: 10 <class 'int'>
print(b, type(b)) # 출력: -5 <class 'int'>
print(c, type(c)) # 출력: 0 <class 'int'>
정수형은 다양한 수 체계를 지원한다:
10진수: 일반적인 정수 (예: 123)
2진수: 0b 또는 0B로 시작 (예: 0b1010)
8진수: 0o 또는 0O로 시작 (예: 0o12)
16진수: 0x 또는 0X로 시작 (예: 0xA)
decimal = 123
binary = 0b1010
octal = 0o12
hexadecimal = 0xA
print(decimal) # 출력: 123
print(binary) # 출력: 10
print(octal) # 출력: 10
print(hexadecimal) # 출력: 10
2. 실수형 (Float)
실수형은 소수점을 포함하는 숫자를 나타내며, 파이썬에서는 float 타입으로 정의된다. 실수형은 일반적으로 64비트 부동 소수점 수로 표현된다.
x = 3.14
y = -2.0
z = 0.0
print(x, type(x)) # 출력: 3.14 <class 'float'>
print(y, type(y)) # 출력: -2.0 <class 'float'>
print(z, type(z)) # 출력: 0.0 <class 'float'>
실수형은 과학적 표기법도 지원한다.
a = 1.2e3
b = 1.2e-3
print(a) # 출력: 1200.0
print(b) # 출력: 0.0012
3. 복소수형 (Complex)
복소수형은 실수부와 허수부로 구성된 숫자를 나타내며, 파이썬에서는 complex 타입으로 정의된다. 복소수는 a + bj 형식으로 표현된다 (j는 허수부를 나타냄).
c1 = 2 + 3j
c2 = 5 - 4j
print(c1, type(c1)) # 출력: (2+3j) <class 'complex'>
print(c2, type(c2)) # 출력: (5-4j) <class 'complex'>
복소수의 실수부와 허수부에 접근할 수 있다.
c = 3 + 4j
print(c.real) # 출력: 3.0
print(c.imag) # 출력: 4.0
4. 숫자 연산
파이썬은 다양한 숫자 연산자를 지원한다.
산술 연산자:
덧셈: +
뺄셈: -
곱셈: *
나눗셈: /
정수 나눗셈: //
나머지: %
제곱: **
a = 10
b = 3
print(a + b) # 출력: 13
print(a - b) # 출력: 7
print(a * b) # 출력: 30
print(a / b) # 출력: 3.3333333333333335
print(a // b) # 출력: 3
print(a % b) # 출력: 1
print(a ** b) # 출력: 1000
5. 형 변환 (Type Conversion)
숫자 타입 간의 변환도 가능하다. int(), float(), complex() 함수를 사용하여 변환할 수 있다.
# 실수형을 정수형으로 변환
x = 3.14
print(int(x)) # 출력: 3
# 정수형을 실수형으로 변환
y = 10
print(float(y)) # 출력: 10.0
# 정수형을 복소수형으로 변환
z = 7
print(complex(z)) # 출력: (7+0j)
# 실수형을 복소수형으로 변환
w = 1.5
print(complex(w)) # 출력: (1.5+0j)
6. 내장 함수 (Built-in Functions)
파이썬은 다양한 숫자 관련 내장 함수를 제공한다.
abs(): 주어진 숫자의 절대값을 반환한다. 절대값은 숫자의 부호를 제거한 값이다.
print(abs(-7)) # 출력: 7
print(abs(3.14)) # 출력: 3.14
print(abs(-0.5)) # 출력: 0.5
round(): 주어진 숫자를 지정한 소수점 자리로 반올림한다. 소수점 자리를 지정하지 않으면 가장 가까운 정수로 반올림한다.
print(round(3.456, 2)) # 출력: 3.46
print(round(3.456)) # 출력: 3
print(round(2.675, 2)) # 출력: 2.67 (부동 소수점 연산의 특성에 따라 오차 발생 가능)
pow(): 주어진 숫자의 거듭제곱을 계산한다. 두 개의 인자를 받으며, 첫 번째 인자를 두 번째 인자만큼 거듭제곱한 값을 반환한다. 세 번째 인자를 제공하면 결과를 해당 값으로 나눈 나머지를 반환한다.
print(pow(2, 3)) # 출력: 8 (2^3)
print(pow(2, 3, 5)) # 출력: 3 (2^3 % 5)
max(): 인자로 전달된 값들 중 가장 큰 값을 반환한다. 시퀀스(리스트, 튜플 등)에서 최대값을 구할 수도 있다.
print(max(1, 2, 3, 4, 5)) # 출력: 5
print(max([10, 20, 30, 40, 50])) # 출력: 50
print(max("apple", "banana", "cherry")) # 출력: cherry (문자열 비교는 사전 순서로)
min(): 인자로 전달된 값들 중 가장 작은 값을 반환한다. 시퀀스(리스트, 튜플 등)에서 최소값을 구할 수도 있다.
print(min(1, 2, 3, 4, 5)) # 출력: 1
print(min([10, 20, 30, 40, 50])) # 출력: 10
print(min("apple", "banana", "cherry")) # 출력: apple
sum(): 시퀀스(리스트, 튜플 등)의 모든 요소의 합을 계산하여 반환한다. 두 번째 인자를 제공하면 그 값을 초기값으로 하여 합산을 시작한다.
print(sum([1, 2, 3, 4, 5])) # 출력: 15
print(sum([10, 20, 30, 40, 50], 100)) # 출력: 250
7. 숫자에 밑줄(Underscores) 사용하기
파이썬 3.6부터 숫자 리터럴 내에 밑줄(_)을 사용하여 가독성을 높일 수 있게 되었다. 특히 큰 숫자나 복잡한 숫자 리터럴을 읽기 쉽게 만들 때 유용하다. 밑줄은 숫자의 위치에 영향을 미치지 않으며, 단순히 시각적인 구분을 위해 사용된다.
정수형에서 밑줄 사용
정수형 숫자 내에 밑줄을 사용하여 천 단위나 원하는 구분 단위로 숫자를 나눌 수 있다.
million = 1_000_000
print(million) # 출력: 1000000
binary_number = 0b1010_0101_1100_1100
print(binary_number) # 출력: 42444
octal_number = 0o12_34
print(octal_number) # 출력: 668
hex_number = 0xFF_FF
print(hex_number) # 출력: 65535
실수형에서 밑줄 사용
실수형 숫자에서도 밑줄을 사용하여 가독성을 높일 수 있다.
pi = 3.14_15_92
print(pi) # 출력: 3.141592
large_float = 1_234.567_890
print(large_float) # 출력: 1234.56789
과학적 표기법에서 밑줄 사용
과학적 표기법에서도 밑줄을 사용할 수 있다.
avogadro_number = 6.022_140_76e23
print(avogadro_number) # 출력: 6.02214076e+23
small_number = 1.6_022e-19
print(small_number) # 출력: 1.6022e-19
유효하지 않은 밑줄 사용
숫자의 시작이나 끝, 그리고 소수점 앞뒤에 연속으로 밑줄을 사용하는 것은 유효하지 않다.
# 유효하지 않은 예제들 (주석 해제 시 오류 발생)
# invalid_number = _1000
# invalid_decimal = 1._234
# invalid_decimal2 = 1._e3