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']
'''