a = 123 # 정수형 (int)
a = 1.23 # 실수형 (float)
a = 4.24E10 # 지수형
a = 4.24e-10 # 지수형
a = 0o177 # 8진수
a = 0x8ff # 16진수
a = 0b1010 # 2진수
a = 3 + 4j # 복소수 (complex)
a + b # 덧셈
a - b # 뺄셈
a * b # 곱셈
a / b # 나눗셈 (실수)
a // b # 몫 (정수 나눗셈)
a % b # 나머지
a ** b # 거듭제곱
-a # 부호 반전
# divmod: 몫과 나머지 동시에
q, r = divmod(10, 3) # (3, 1)
# 절댓값
abs(-5) # 5
abs(-3.14) # 3.14
# 반올림
round(3.14159) # 3
round(3.14159, 2) # 3.14 (소수점 2자리)
round(2.5) # 2 (은행가 반올림: 짝수로)
round(3.5) # 4
# 거듭제곱
pow(2, 3) # 8
pow(2, 3, 5) # 3 (2^3 % 5)
# 최대/최소
max(1, 2, 3) # 3
min(1, 2, 3) # 1
max([1, 2, 3]) # 리스트도 가능
# 합계
sum([1, 2, 3, 4]) # 10
sum([1, 2, 3], 10) # 16 (시작값 10)
# 10진수 → 다른 진법 (문자열 반환)
bin(10) # '0b1010' (2진수)
oct(10) # '0o12' (8진수)
hex(10) # '0xa' (16진수)
# 다른 진법 → 10진수
int('1010', 2) # 10 (2진수 → 10진수)
int('12', 8) # 10 (8진수 → 10진수)
int('a', 16) # 10 (16진수 → 10진수)
# 접두사 없이 변환
format(10, 'b') # '1010'
format(10, 'o') # '12'
format(10, 'x') # 'a'
import math
# 올림/내림/버림
math.ceil(3.2) # 4 (올림)
math.floor(3.8) # 3 (내림)
math.trunc(-3.8) # -3 (버림, 0 방향)
# 제곱근/로그
math.sqrt(16) # 4.0
math.log(10) # 2.302... (자연로그)
math.log10(100) # 2.0
math.log2(8) # 3.0
# 삼각함수
math.sin(math.pi / 2) # 1.0
math.cos(0) # 1.0
math.tan(math.pi / 4) # 1.0
# 상수
math.pi # 3.141592...
math.e # 2.718281...
math.inf # 무한대
math.nan # Not a Number
# 팩토리얼/조합
math.factorial(5) # 120
math.comb(5, 2) # 10 (5C2)
math.perm(5, 2) # 20 (5P2)
# 최대공약수/최소공배수
math.gcd(12, 8) # 4
math.lcm(12, 8) # 24 (Python 3.9+)
# 기타
math.fabs(-3.14) # 3.14 (실수 절댓값)
math.copysign(1, -3) # -1.0 (부호 복사)
math.isnan(x) # NaN 체크
math.isinf(x) # 무한대 체크
# 소수점 자릿수 제한 출력
print(f"{3.14159:.2f}") # "3.14"
# 천 단위 구분자
print(f"{1000000:,}") # "1,000,000"
# 정수 나눗셈 vs 실수 나눗셈
7 // 2 # 3 (정수)
7 / 2 # 3.5 (실수)
# 음수 나눗셈 주의
-7 // 2 # -4 (내림)
int(-7 / 2) # -3 (버림)
# 부동소수점 비교 주의
0.1 + 0.2 == 0.3 # False!
math.isclose(0.1 + 0.2, 0.3) # True