예제코드
1)
print
(
10
+
5
)
print
(
10
-
5
)
print
(
10
*
5
)
print
(
10
/
5
)
2)
import
math
print
(math.ceil(
2.2
)) //3
print
(math.floor(
2.7
)) //2
print
(math.
pow
(
2
,
10
)) //1024
print
(math.pi) //3.141592...
대부분의 수학관련 함수들이 math모듈에 존재하지만, 자주사용되는 아래의 함수에 대해서는 특별한 모듈 임포트없이 사용할수 있도록 내장함수로 제공한다.
-. 내장형으로 제공되는 수학관련 함수들
>sum(iterable[, start])
순회가능한(iterable)객체의 총 합계를 반환, 총 합계의 시작값(start)이 주어지면 그 값부터 누적되며, 그렇지 않은 경우 0이 기본값이 된다.
>>> sum([1,2,3]) #1 + 2 + 3 = 6
6
>>> sum([1,2,3],4) #4 + 1 + 2 + 3 = 10
10
|
>max(iterable)
순회가능한 객체의 최댓값을 반환
>>> max([1,2,3])
3
|
>min(iterable)
순회가능한 객체의 최솟값을 반환
>>> min([1,2,3])
1
|
>abx(x)
인자 x의 절대값을 반환
>>> abs(-11)
11
|
>pow(x, y[, z])
x의 y제곱값을 반환, 세번째 인자가 입력된 경우, x의 y제곱한 결과를 z로 나눈 나머지(modulo연산)를 반환
>>> pow(2,10) #2의10제곱
1024
>>> pow(2,10,100) #2의 10제곱을 100으로 나눈 나머지
24
|
>round(x[, n])
인자 x의 반올림결과를 반환, 자릿수가 지정된 경우 반올림 결과를 지정된 자리까지 나타내며, 그렇지 않은경우 기본값은 0이다.
>>> round(3.141592) #소수점이후부터 반올림
3
>>> round(3.141592,2) #소수점 2자리 이후부터 반올림
3.14
>>> round(2341.1234,-1) #소수점 1자리 이전부터 반올림
2340.0
|
>divmod(a, b)
'a/b'의 몫과 나머지를 튜플형태로 반환
>>> divmod(10,7)
(1, 3)
>>> divmod(5.3,2.1)
(2.0, 1.0999999999999996)
|
>> math 모듈 <<
수학관련 함수들이 들어있는 모듈이며
모듈내의 함수는"import math"한후사용가능
-. 상수
math모듈에서 상수는 아래와 같이 정의되어 있다.
>원주율(π)값
>>> math.pi
3.141592653589793
|
>자연상수(e) 값
>>> math.e
2.718281828459045
|
-. 수치 연산
수학모듈에 정의되어있는 수치 연산 관련 함수는 아래와 같다.
>math.ceil(x)
'N >= x'를 만족하는 가장 작은 정수 N을 반환(올림 연산)
>>> math.ceil(3.14)
4
|
>math.floor(x)
'N <= x'를 만족하는 가장 큰 정수 N을 반환(내림 연산)
>>> math.floor(3.14)
3
|
>math.trunc(x)
x의 정수부분만을 반환(버림 연산)
>>> math.trunc(3.14)
3
|
>math.copysign(x,y)
y의 부호만 x에 복사하여 반환
>>> math.copysign(6.5,-0.0) #부호만 복사
-6.5
|
>math.fabs(x)
x의 절대값을 반환
>>> math.fabs(-6.5) #절대값연산
6.5
|
>math.factorial(x)
x의 계승(factorial,x!)값을 반환
>>> math.factorial(3.0) #factorifal연산(3!)
6
|
>math.fmod(x,y)
c라이브러리에 있는 fmod()함수를 호출,
파이썬 연산자중 '%'(나머지연산)과 유사하다. 하지만 연산결과가 항상 동일한것은 아니다. math.fmod(x,y)연산은 항상 피제수 x와 몫으 부호가 동일하지만 '%'연산은 몫이 피제수와 항상 일치하지 않기 때문이다. 또한 부동소수점 연사ㄴ의 정확도차이도 존재하기 때문에,
일반적으로 정수연산에는 '%'연산을
부동소수점연산에는 math.fmod()연산을 사용하는것을 권장한다.
>>> math.fmod(5.5, 3) #피제수와 제수의 부호가 같은 경우
2.5
>>> 5.5 % 3
2.5
>>> math.fmod(-5.5, 3) #피제수와 제수의 부호가 다른 경우
-2.5
>>> -5.5 % 3
0.5
|
>math.fsum(iterable)
입력받은 값의 합계를 반환
>>> math.fsum([1,2,3])
6.0
|
>math.modf(x)
입력받은 x의 순수 소수부분과 정수부분으로 분리하여 튜플로 반환
분리된 두 부분 모두에 부호가 할당됨
>>> math.modf(3.14)
(0.14000000000000012, 3.0)
>>> math.modf(-6.5)
(-0.5, -6.0)
|
-. 지수, 로그 연산
수학모듈에서 지원하는 일반적인 지수 연산과 로그연산에 관련된 함수는 아래와 같다.
>math.pow(x,y)
x의 y제곱결과를 반환
>>> math.pow(2,10)
1024.0
>>> pow(2,10)
1024
>>> 2**10
1024
|
>math.sqrt(x)
x의 제곱근(square root)한 결과를 반환
>>> math.sqrt(2) #√2연산
1.4142135623730951
>>> math.sqrt(9) #√9연산
3.0
|
>math.exp(x)
자연상수(e)의 x제곱결과를 반환
>>> math.exp(2)
7.38905609893065
|
>math.log(x[, base])
밑을 base로 하는 log X의 결과를 반환
만약 base가 입력되지 않으면, 자연로그(ln X)로 연산
>>> math.log(math.e) #'ln e'연산
1.0
|
-. 삼각함수 연산
각도를 표기하는 기법으로 60분법과 라디안(radian)이 있다. 이에 대한 상호 변환함수는 아래와 같다.
>math.degrees(x)
라디안으로 표현된 각도를 60분법으로 변환
>math.radians(x)
60분법으로 표현된 각도를 라디안으로 변환
아래는 파이썬에서 주로 사용되는 삼각함수이다.
>math.sin(x)
>math.asin(x)
>math.cosh(x)
>math.asinh(x)
>math.cos(x)
>math.atan(x)
>math.sinh(x)
>math.atanh(x)
>math.tan(x)
>math.acos(x)
>math.tanh(x)
>math.acosh(x)
삼각함수의 사용방법에 대한 예
>>> r = math.radians(30) #30도를 라디안으로 변환
>>> math.sin(r) #sin(30)연산
0.49999999999999994
>>> r = math.radians(180) #180도를 라디안으로 변환
>>> v = math.cos(r)
>>> v
-1.0
>>> r == math.acos(v) #cos()과 acos()으로 수행한 값을 상호비교
True
>>> math.degrees(r) #π 라디안을 60분법으로 변환
180.0
|
※ 위의 예제에서 sin(30도)가 정확히 0.5가 아닌 0.49999999999999994로 출력되는것은 컴퓨터에서 부동소소줌을 표현하는 방식때문에 발생하는 문제이다. 이에 대해서는 이후에 나오는 십진법모듈에서 자세히 알아보도록 하겠다.
출처 : http://blog.naver.com/PostList.nhn?blogId=dudwo567890 <- 분수, 십진수 등 다양한 파이썬 예제블로그