모듈
- 모듈이란 파이썬 코드를 작성한 스크립트 파일
- 함수, 변수, 클래스 등이 정의되어 있음
- 파이썬은 자주 사용하는 기능을 표준 모듈로 미리 작성하여 설치해 두므로 가져와 사용하면 됨
- 표준 모듈은 언어의 일부는 아니지만 해석기와 함께 설치되기 때문에 언제든지 사용 가능
- 이 모듈의 집합이 바로 표준 라이브러리
- 외부의 모듈을 가져와 사용할 때 import 명령을 사용
- 이 명령에 의해 모듈에 정의된 코드가 현재 소스로 읽힘
- 기능별로 모듈이 나누어져 있어 쓰고자 하는 기능에 따라 적절한 모듈을 import 해야 함
import math # 모듈 전체 import
print(math.sqrt(2)) # 모듈 내 함수 호출
- 모듈 전체를 import할 때는 'import 모듈'
- 해당 모듈에 작성된 모든 상수와 함수를 가져옴
- 이후 마치 소스에서 직접 정의한 것처럼 모듈 내의 함수를 자유롭게 호출 가능
- 모듈의 함수를 호출할 때는 함수명 앞에 모듈명을 붙여 소속을 밝힘
import math as m # 모듈의 별명 지정 가능
print(m.sqrt(2)) # 함수 호출 시 모듈명 대신 별명 사용
- 모듈 이름이 길고 복잡하면 함수명 앞에 모듈명을 일일이 붙이기 번거로움
- import문의 as 다음에 모듈의 별명을 지정하면 모듈명 대신 별명 사용 가능
from math import sqrt # 모듈 내 특정 함수를 import
print(sqrt(2)) # 소속을 밝힐 필요 없이 함수명으로 바로 호출 가능
- 특정 함수만 import할 때는 'from 모듈 import 함수명'
- 같은 모듈 소속의 함수는 콤마로 구분하여 여러 개 불러올 수 있음
- 모둘의 모든 함수를 다 불러올 때는 함수명 자리에 * 문자 사용
from math import sqrt as sq # 함수에 대해서도 별명 지정이 가능
print(sq(2))
- import몬은 보통 소스의 앞쪽에 작성하지만 꼭 그럴 필요는 없음
- 소스 중간에도 필요할 때 import문 사용 가능
프로그래머스 lev1 정수 제곱근 판별
작성 코드
import math
def solution(n):
s = math.sqrt(n)
return (int(s) + 1) ** 2 if s - int(s) == 0.0 else -1
※ 굳이 정수로 반환할 필요는 없어 보임
다른 풀이
def solution(n):
sqrt = n ** (1/2)
return (sqrt + 1) ** 2 if sqrt % 1 == 0 else -1
1. 제곱근 구하기
- math 모듈 import없이
- n ** (1/2) = n ** 0.5 = n ** .5
2. 양의 정수 제곱근이 있는지 확인
- sqrt % 1 == 0
- 나머지가 0이 아니라는 것은 양의 정수가 아니라는 것
프로그래머스 lev1 최대공약수와 최소공배수
작성 코드
def solution(n, m):
divisor = min(n, m)
multiple = max(n, m)
while n % divisor != 0 or m % divisor != 0:
divisor -= 1
while multiple % n != 0 or multiple % m != 0:
multiple += 1
return [divisor, multiple]
다른 풀이
def solution(a, b):
gcd, lcm = min(a, b), max(a, b)
while gcd != 0:
r = lcm % gcd
lcm, gcd = gcd, r
answer = [lcm, a * b / lcm]
return answer
최대공약수 (greatest common factor)
유클리드 호제법
2개의 자연수 a, b(a > b)에 대해서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
1071과 1029의 최대공약수를 구하면,
- 1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42
- 1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21
- 42는 21로 나누어 떨어진다.
따라서, 최대공약수는 21이다.
최소공배수 (Least Common Multiple)
두 수 a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] sort, join (0) | 2022.03.26 |
---|---|
[Python] 문자열 (0) | 2022.03.21 |
[Python] 2차원 리스트, zip (0) | 2022.03.20 |
[Python] 리스트 (0) | 2022.03.19 |
[Python] map, input, strip, split (0) | 2022.03.18 |