공식 문서 source code 링크 fractions fractions는 유리수를 계산할 때 사용하는 모듈입니다. result = 1/5 + 2/5 print(result) # 0.6000000000000001 위의 예시는 python에서 볼 수 있는 이상한 연산 결과의 예입니다. 원래 계산 결과는 0.6(3/5)이여야 하지만 이진수 기반의 python float 연산은 위처럼 미세한 오차가 발생할 수 있습니다. python에서 유리수 연산을 정확하게 하려면 fractions.Fraction을 사용해야 합니다. 유리수는 Fraction(분자, 분모) 형태 또는 Fraction('분자/분모') 형태로 만들 수 있습니다. from fractions import Fraction result_1 = Fract..
공식 문서 source code decimal decimal.Decimal decimal.Decimal은 숫자를 10진수로 처리해 정확한 소수점 자릿수를 표현할 때 사용하는 모듈입니다. print(0.1 * 3) # 0.30000000000000004 print(1.2 - 0.1)# 1.0999999999999999 print(0.1 * 0.1)# 0.010000000000000002 위의 예시는 python에서 볼 수 있는 이상한 연산 결과의 예입니다. 이진수 기반의 python float 연산은 위처럼 미세한 오차가 발생할 수 있습니다. print(0.1 * 3 == 0.3) # False import math print(math.isclose(0.1 * 3, 0.3)) # True 그래서 같은지를 ..
공식문서 source code math math.gcd math.gcd() 함수를 이용하면 최대공약수(gcd, greatest common divisor)를 구할 수 있습니다. math.gcd() 함수는 python3.5부터 사용할 수 있습니다. import math gcd = math.gcd(50, 100, 70) print(gcd) # 10 위 코드처럼 50과 100, 70의 최대 공약수를 구할 수 있습니다. math.lcm math.lcm()은 최소공배수(lcm, least common multiple)를 구하는 함수입니다. math.lcm()은 python3.9부터 사용할 수 있습니다. import math lcm = math.lcm(25, 40) print(lcm) # 200 위 코드처럼 25와..
공식 문서 source code enum enum은 서로 관련이 있는 여러 개의 상수 집합을 정의할 때 사용하는 모듈입니다. enum 모듈은 python3.4 버전 부터 사용할 수 있습니다. 만약 날짜를 입력하면 그 날의 요일에 해당하는 메뉴를 반환하는 get_menu() 함수를 아래처럼 만들었습니다. from datetime import date def get_menu(input_date: date) -> str: weekday = input_date.isoweekday() # 1: 월요일, 2: 화요일, ..., 7: 일요일 if weekday == 1: menu = "김치찌개" elif weekday == 2: menu = "부대찌개" elif weekday == 3: menu = "순두부찌개" e..
공식 문서 source code pprint는 데이터를 보기 좋게 출력(pretty print)할 때 사용하는 모듈입니다. import pprint result = {'userId': 1, 'id': 1, 'title': 'hi', 'body': 'https://docs.python.org/ko/3/library/pprint.html'} pprint.pprint(result) # {'body': 'https://docs.python.org/ko/3/library/pprint.html', # 'id': 1, # 'title': 'hi', # 'userId': 1} pprint는 주로 구조가 복잡한 JSON 데이터를 디버깅 용도로 출력할 때 사용합니다. http://www.yes24.com/Product/G..
공식 문서 source code heapq는 순위가 가장 높은 자료(data)를 가장 먼저 꺼내는 우선순위 큐를 구현한 모듈입니다. 만약 기록이 좋은 순서대로 3명을 자동으로 뽑는 프로그램을 아래처럼 구현할 수 있습니다. import heapq data = [ (19, 'lee'), (20, 'park'), (12, 'kim'), (30, 'cho'), (13, 'ki'), (43, 'choi'), ] h = [] # 힙 생성 for score in data: heapq.heappush(h, score) # 힙에 데이터 저장 for i in range(3): print(heapq.heappop(h)) # 최솟값부터 힙 반환 # (12, 'kim') # (13, 'ki') # (19, 'lee') heap..