AboutPython

[파이썬] math, time, random 모듈

scone 2022. 5. 3. 01:31

[math]

  • math 외부 모듈을 다루기 전에, 먼저 내장함수를 다뤄봅시다.
    sum, max, min, pow, round 등이 있습니다.
#수학 관련 내장함수
mylist = [2,5,3.14,58,10,2]
print(f'sum(mylist):{sum(mylist)}')                   #sum   합
print(f'max(mylist):{max(mylist)}')                   #max   최댓값
print(f'min(mylist):{min(mylist)}')                   #min   최솟값
print(f'pow(13,2):{pow(13,2)}')                       #pow   제곱
print(f'round(3.141592,3):{round(3.141592,3)}')       #round 반올림
print()코딩
'''
sum(mylist):80.14
max(mylist):58
min(mylist):2
pow(13,2):169
round(3.141592,3):3.142
'''

 

  • math 모듈을 다뤄 봅시다.
    fabs, ceil, floor, trunc, gcd, factorial, sqrt 등이 있습니다.
import math
print(f'math.fabs(-10):{math.fabs(-10)}')                #fabs 절대값
print(f'math.fabs(-10):{math.fabs(-0.1289)}')            #fabs 절대값
print(f'math.ceil(5.21):{math.ceil(5.21)}')              #ceil 올림
print(f'math.ceil(-4.31):{math.ceil(-4.31)}')            #ceil 올림
print(f'math.ceil(5.21):{math.ceil(5.21)}')              #ceil 올림
print(f'math.floor(-4.31):{math.floor(-4.31)}')          #floor 내림
print(f'math.floor(5.21):{math.floor(5.21)}')            #floor 내림
print(f'math.trunc(-4.31):{math.trunc(-4.31)}')          #trunc 버림
print(f'math.trunc(5.31):{math.trunc(5.31)}')            #trunc 버림
print(f'math.gcd(14,21):{math.gcd(14,21)}')               #gcd 최대공약수
print(f'math.factorial(10):{math.factorial(10)}')        #factorial 팩토리얼
print(f'math.sqrt(10):{math.sqrt(10)}')                  #sqrt 제곱근
print()
'''
math.fabs(-10):10.0
math.fabs(-10):0.1289
math.ceil(5.21):6
math.ceil(-4.31):-4
math.ceil(5.21):6
math.floor(-4.31):-5
math.floor(5.21):5
math.trunc(-4.31):-4
math.trunc(5.31):5
math.gcd(14,21):7
math.factorial(10):3628800
math.sqrt(10):3.1622776601683795
'''

[time] 

  • time.localtime() 함수로 현재 날짜, 월, 일, 시간, 요일 등에 대해 알 수 있습니다.
import time
print(f'{time.localtime()}')          #현재 날짜, 월, 일, 시간
'''
time.struct_time(tm_year=2022, tm_mon=5, tm_mday=3, tm_hour=1, tm_min=12, tm_sec=33, tm_wday=1, tm_yday=123, tm_isdst=0)
'''

 

  • 각 요소는 다음과 같이 개별적으로 접근 가능합니다.
import time
lt = time.localtime()
print(f'lt.tm_year:{lt.tm_year}')          #년도
print(f'lt.tm_mon:{lt.tm_mon}')            #월
print(f'lt.tm_mday:{lt.tm_mday}')          #일
print(f'lt.tm_hour:{lt.tm_hour}')          #시간
print(f'lt.tm_min:{lt.tm_min}')            #분
print(f'lt.tm_sec:{lt.tm_sec}')            #초
print(f'lt.tm_wday:{lt.tm_wday}')          #요일
print()
'''
lt.tm_year:2022
lt.tm_mon:5
lt.tm_mday:3
lt.tm_hour:1
lt.tm_min:12
lt.tm_sec:33
lt.tm_wday:1
'''

tm_wday는 요일을 의미합니다. 0이면 월요일입니다. 오늘은 1이어서 화요일이네요.

월요일부터 시작하는걸 보니 근본이네요.

 

https://www.daleseo.com/python-time/

그외에도 더 많은 기능들이 있습니다.

검색해보면 많이 나오니 참고하면 좋을것 같습니다.

저는 나중에 필요하면 그때 다뤄보도록 하겠습니다.

 


[random] 

  • 실수인 난수 뽑기
    random.random() , random.uniform(a,b) 
import random
print(f'random.random():{random.random()}')             #0 이상 1 미만의 실수
print(f'random.uniform(1,7):{random.uniform(1,7)}')      #1 이상 7 이하의 실수
'''
random.random():0.8465798332559927
random.uniform(1,7):6.997424173587927
'''
  • 정수인 난수 뽑기
    random.randrange(a,b) , random.randint(a,b)
print(f'random.randrange():{random.randrange(1,7)}')     #1 이상 7 미만의 정수
print(f'random.randrange():{random.randrange(7)}')       #0 이상 7 미만의 정수
print(f'random.randint():{random.randint(1,7)}')         #1 이상 7 이하의 정수
'''
random.randrange():1
random.randrange():6
random.randint():2
'''

범위를 이하로 하냐, 미만으로 하냐 차이일 뿐 두 함수의 기능은 기본적으로 같습니다.

다만 randrange는 range() 함수와 유사해보이네요.

 

  • 셔플
    random.shuffle(seq) 를 하면 순서가 섞이게 됩니다.
abc = ['a','b','c','d']
random.shuffle(abc)
print(abc)                  #셔플
'''
['a', 'd', 'c', 'b']
'''

 

  • 랜덤하게 뽑기
    하나를 뽑을 때는 random.choice(seq) , 여러개를 뽑을 때는 random.sample(seq, 뽑을 갯수) 를 쓰면 됩니다.
  • random.sample(seq,뽑을 갯수) 는 중복을 허용하지 않기 때문에 중복을 허용하여 뽑기 위해서는, random.choice(seq)를 여러번 해주어야합니다.
print(random.choice(abc))   #랜덤 선택
print(random.sample(abc,2))
pritn()

aaa = ['a','a','a']         #중복된 요소들 있어도 사용 가능하다.
print(random.choice(aaa))
print(random.sample(aaa,2))
'''
b
['a', 'd']

a
['a', 'a']
'''