Yeonnnnny

[python] 표준 모듈 본문

Python

[python] 표준 모듈

yeonny_do 2023. 10. 25. 19:25

■ import

 

  - 모듈은 파이썬 코드를 작성해 놓은 스크립트 파일임

  - 스크립트 파일 안에는 함수, 변수, 클래스 등이 정의되어 있음

  - 외부의 모듈을 가져와 사용할 때는 import 명령을 사용

  - 모듈에 포함된 함수를 호출할 때는 함수명 앞에 모듈명을 붙임 

  - 특정 함수나 클래스만 임포트하고자 할 때는 다음 구문을 사용함

from 모듈 import 함수명, 클래스명

 

  - 모듈의 모든 함수를 불러올 때는 함수명 자리에 * 문자를 사용

  - 모듈의 이름이 길고 복잡할 때는 as 다음에 별칭을 지정할 수 있음

from math as m

 

 

■ math 모듈

  :  수학 연산에 필요한 상수와 연산함수 제공

 

sqrt(x) x의 제곱근
pow(x,y) x의 y승
ceil(x) 올림 값
floor(x) 내림값
fabs(x) x의 절대값
trunc(x) x의 소수점 이하 버림

 

import math
print(math.sqrt(2)) #1.4142135623730951

 

 

■ time 모듈

  :  날짜와시간 관련 기능 제공

import time

t=time.time()
print(t)            #1698226156.482041

print(time.ctime()) #Wed Oct 25 18:29:16 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억까지 합계 계산 총 소요 시간 : 8.43초

 

import time

print(time.localtime())  # 시간에 대한 여러 정보들
# 결과
#time.struct_time(tm_year=2023, tm_mon=10, tm_mday=25, tm_hour=18, tm_min=35,
#tm_sec=17, tm_wday=2, tm_yday=298, tm_isdst=0)

now = time.localtime()

hour = '오후' if now.tm_hour>12 else '오전'

print(f'{now.tm_year}년 {now.tm_mon}월 {now.tm_mday}일 {hour}{now.tm_hour%12}시 {now.tm_min}분 {now.tm_sec}초')
# 결과 : 2023년 10월 25일 오후 6시 35분 17초

 

import time

print('이 문장은')
time.sleep(2)  # 매개변수로 전달된 초만큼 프로그램의 실행을 잠시 중단

print('2초 단위로')
time.sleep(2)

print('출력됩니다.')

 

 

 

■ calendar 모듈

  - calendar 함수는 인수로 받는 년도의 달력 객체를 반환

  - month 함수는 년도와 달을 인수로 받은 해당 월의 달력 객체를 반환

 

import calendar

print(calendar.calendar(2021))
print(calendar.month(2023,10))

 

 

 

 

■ 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=' ') # 7 7 1 5 9

 

import random

food = ['짜장면','짬뽕','군만두','탕수육']
random.shuffle(food)
print(food) # ['탕수육', '짬뽕', '군만두', '짜장면'] : 출력값 계속 바뀜

 

import random

food = ['짜장면','짬뽕','군만두','탕수육']

print(random.choice(food))  # 짬뽕

 

   [문제] 로또 번호 생성기

     - 1~45 사이의 숫자 6개 뽑기
     - 단, 순자를 뽑을 때 중복된 숫자는 사용할 수 없음
     - 결과는 오름차순으로 정렬해서 출력함

 

# 방법1)

import random

lotto = random.sample(range(1,46),6)
print('로또 번호 : ',sorted(lotto))

#로또 번호 :  [9, 17, 29, 37, 40, 41]

 

# 방법2) list사용

import random

lotto=[]

while True:
    data = random.randint(1,45)
    
    if data not in lotto :
        lotto.append(data)
   
    if len(lotto)==6:
        break

print('로또 번호 : ',sorted(lotto))

# 로또 번호 :  [4, 8, 29, 33, 41, 42]

 

# 방법3) set 사용

import random

lotto =set()

while True:
    lotto.add(random.randint(1,45))

    if len(lotto) == 6:
        break

print('로또 번호 : ', sorted(list(lotto)))

#로또 번호 :  [4, 19, 20, 26, 28, 37]

 

[문제] 숫자 맞추기 게임
  - 1~100 사이의 난수를 맞추는 게임
  - 입력값과 생성 값을 비교해서 어떤 값이 더 큰지 힌트를 알려줌
  - 정답을 맞추면 시도 횟수 출력과 함께 게임을 종료

 

import random

print('[숫자 맞추기 게임]')
print('='*30)

target = random.randint(1,100)
cnt=0

while True : 
    input_data = int(input('숫자 입력 : '))
    cnt+=1

    if target == input_data:
        print('%d번 끝에 정답을 맞추셨습니다. 축하합니다' %cnt)
        break
    elif target>input_data:
        print('up')
    else:
        print('down')

 

 

■ sys 모듈

  - 파이썬 해석기가 실행되는 환경과 해석기의 여러 가지 기능을 조회하고 관리하는 모듈

  - sys.exit(0) : 프로그램 강제 종료

 

 

■ 명령행 인수

  - argv[0]에 실행파일 전체 경로가 들어가고 이 후 인수는 argv[1], argv[2]로 전달됨

 

import sys

print(sys.argv)

#['C:\\Users\\user\\anaconda3\\Lib\\site-packages\\ipykernel_launcher.py',  #실행파일 전체경로
#'-f', #인수1
#'C:\\Users\\user\\AppData\\Roaming\\jupyter\\runtime\\kernel-7eb4d729-1f19-49b1-8df2-7f90104e68e9.json'] #인수2

 

Reference : https://sesoc.tistory.com/237?category=1002032

'Python' 카테고리의 다른 글

[python] 입출력 (I/O)  (1) 2023.10.29
[python] 예외 처리  (1) 2023.10.26
[python] docstring  (0) 2023.10.25
[python] 값으로서의 함수  (0) 2023.10.25
[Python] lambda 함수  (0) 2023.10.25