프로그래밍 언어/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) : 프로그램 강제 종료