프로그래밍 언어/Python
[Python] 표준모듈 (math, time, random 등)
eunnys
2023. 10. 26. 20:16
■ import
- 모듈은 파이썬 코드를 작성해 놓은 스크립트 파일이다.
- 스크립트 파일 안에는 함수, 변수, 클래스 등이 정의되어 있다.
- 외부의 모듈을 가져와 사용할 때는 import 명령을 사용한다.
- 모듈에 포함된 함수를 호출할 때는 함수명 앞에 모듈명을 붙인다.
- 특정 함수나 클래스만 import하고자 할 때는 다음 구문을 사용한다
- from 모듈 import 함수명, 클래스명
- 모듈의 모든 함수를 불러올 떄는 함수명 자리에 * 문자를 사용
- 모듈의 이름이 길고 복잡할 때는 as 다음에 별칭을 지정할 수 있다.
- import 모듈 as 별칭
■ math 모듈
- 수학 연산에 필요한 상수와 연산 함수를 제공
함수명 | 설명 |
sqrt(x) | x의 제곱근을 구한다 |
pow(x, y) | x의 y승을 구한다 |
ceil(x) | 올림 값을 구한다 |
floor(x) | 내림 값을 구한다 |
fabs(x) | x의 절대값을 구한다 |
trunc(x) | x의 소수점 이하를 버린다 |
■ time 모듈
- 날짜와 시간 관련 기능을 제공
import time
t = time.time() # 앞에 time은 모듈명, 뒤에 time은 함수
print(t) # 초 단위
print(time.ctime())
1698128365.3579724
Tue Oct 24 15:19:25 2023
import time
start = time.time()
sum = 0
for i in range(1, 100000001):
sum += i
end = time.time()
print('1~1억까지 합계 계산 총 소요시간: %.2f초'%(end-start))
1~1억까지 합계 계산 총 소요시간: 7.77초
import time
print(time.localtime()) # 운영체제가 갖고 있는 지역정보를 기반으로
time.struct_time(tm_year=2023, tm_mon=10, tm_mday=24, tm_hour=15, tm_min=26, tm_sec=8, tm_wday=1, tm_yday=297, tm_isdst=0)
import time
now = time.localtime()
print(f'{now.tm_year}년 {now.tm_mon}월 {now.tm_mday}일')
print(f'{now.tm_hour}시 {now.tm_min}분 {now.tm_sec}초')
2023년 10월 24일
15시 29분 52초
import time
print('이 문장은')
time.sleep(2) # 매개변수에 전달된 초만큼 프로그램의 실행을 잠시 중단
print('2초 단위로')
time.sleep(2)
print('출력 됩니다.')
이 문장은
2초 단위로
출력 됩니다.
■ random 모듈
- 난수를 생성하는 기능을 제공
함수명 | 설명 |
random() | 0에서 1 미만의 실수 하나를 생성 |
randint(begin, end) | begin~end 사이의 정수 난수 하나를 생성 (end 포함) |
randrange(begin, end) | begin~end 사이의 정수 난수 하나를 생성 (end 제외) |
uniform(begin, end) | begin~end 사이의 실수 난수 하나를 생성 |
choice(list 객체) | 리스트에서 임의의 요소를 하나 골라 리턴 |
shuffle(list 객체) | 리스트의 요소를 무작위로 섞는다 |
sample(list 객체, n) | 리스트 항목 중 n개를 무작위로 뽑아 새로운 리스트를 만든다 |
import random
# 컴퓨터의 난수는 컴퓨터의 시스템 시간을 기준(seed value)으로 발생
# 따라서 기준값을 고정해 놓으면 항상 동일한 난수값이 발생
random.seed(0)
for i in range(5):
print(random.randint(1,10)) # end값 포함
import random
food = ['짜장면', '짬뽕', '탕수육', '군만두']
random.shuffle(food) # shufflr(list): 리스트의 요소들을 랜덤하게 섞어줌
print(food)
import random
food = ['짜장면', '짬뽕', '탕수육', '군만두']
print(random.choice(food)) # choice(list): 리스트의 임의의 하나의 요소를 뽑아냄
[문제] 로또 번호 생성기
- 1~45 사이의 숫자 6개 뽑기
- 단, 숫자를 뽑을 때 중복된 숫자는 사용할 수 없음
- 결과는 오름차순으로 정렬해서 출력한다.
import random
result = []
while (len(result)!=6):
i = random.randint(1,45)
if i in result:
continue
else:
result.append(i)
print(sorted(result))
# set함수 이용
import random
lotto = set() # 원소의 중복을 허용하지 않는다
while True:
lotto.add(random.randint(1,45))
if len(lotto) == 6: break
print(sorted(list(lotto)))
# list함수 이용
import random
lotto = list()
while True:
num = random.randint(1,45)
if num not in lotto:
lotto.append(num)
if len(lotto) == 6: break
lotto.sort() # sort함수는 정렬된 결과를 반환하지 않는다
print(lotto)
# sample 이용
lotto = random.sample(range(1,46),6)
print(sorted(lotto))
[문제] 숫자 맞추기 게임
- 1~100 사이의 난수를 맞추는 게임
- 입력값과 생성값을 비교하여 어떤 값이 더 큰지 힌트를 알려준다.
- 정답을 맞추면 시도 횟수와 함께 게임을 종료한다.
num = random.randint(1,100)
attempts = 0
while True:
guess = int(input('1~100 사이의 숫자를 입력하세요:'))
attempts += 1
if guess < num:
print('생성한 값보다 작습니다. 다시 시도하세요.')
elif guess > num:
print('생성한 값보다 큽니다. 다시 시도하세요.')
else:
print(f'축하합니다. {attempts}번만에 맞췄습니다.')
break
■ sys 모듈
- 파이썬 해석기가 실행되는 환경과 해석기의 여러 가지 기능을 조회하고 관리하는 모듈
- sys.exit(0) : 프로그램 강제 종료