본문 바로가기

Python

13. 모듈 사용하기(math 모듈, random 모듈)

1. 모듈의 종류와 사용법


변수 < 집합형 변수(리스트, 튜플, 딕셔너리, 집합)
함수 < 모듈 < 패키지 또는 라이브러리

모듈(module) : 별도의 파일(*.py)
패키지 또는 라이브러리 : 폴더, 모듈이 저장된 폴더 개념

모듈(module)의 종류 :
    사용자 정의 모듈
    표준 모듈 : random, math
    외부 모듈 : 별도 설치 필요(pip install) , pandas , seaborn ...    

모듈의 사용 : import
    import 모듈명 => 모듈명.함수명(옵션)
    import 모듈명 as 별칭 => 별칭.함수명(옵션)
    from 모둘명 import 함수명 => 함수명(옵션)

2. math 모듈 사용하기


# math 모듈 사용하기 1
import math
# math 모듈내의 함수 확인
# dir(모듈명) : 모듈안에 정의된 함수명을 리스트로 반환 / 프린트와 함께 써야함
print(dir(math)) 
# help(모듈명) : 모듈에 대한 도윰말 기능
help(math) #print 없이 사용
# 모듈명.__doc__ : 모듈 개요 확인
print(math.__doc__)

# 모듈에서 지원되는 함수나 상수 호출 

import math
print(math.floor(10.5667),math.ceil(10.5667), round(10.5667)) # round는 반올림 함수로 내장함수
# 10 11 11

# math 모듈 사용하기 2 - 별칭 이용
# 별칭명.함수, 별칭명.상수
import math as m
# print(dir(m))
print(m.e) # 2.718281828459045
print(m.sqrt(4)) #2.0

# math 모듈 사용하기 3 
# - from 모듈명 import 함수명1, 함수명2, ...
# - from 모듈명 import *
# 모듈명을 생략하고 함수, 상수 바로 호출 가능 ()

from math import pi, e, sqrt, floor, ceil
print(e, pi) #2.718281828459045 3.141592653589793
print(sqrt(10)) #3.1622776601683795
print(floor(3.676757), ceil(3.143943)) # 3 4

 

3. random 모듈 사용하기

# random 모듈
# 무작위 숫자 데이터 생성 
# 리스트에서 무작위로 데이터 선택하거나 섞기
# import
import random
print(random.__doc__)
print(dir(random))

# 무작위 데이터 생성 함수 활용

# randint(start, end) : start ~ end 사이의 범위에서 정수 추출
print(random.randint(1, 10), random.randint(1, 10), random.randint(1, 10)) #4 4 7
print(random.uniform(1.0, 3.0)) #2.93212651913143
num_list = list(range(11,21)) 
print(num_list) #[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
print(random.choice(num_list)) #18
random.shuffle(num_list) # 무작위로 데이터 섞기
print(num_list) #[12, 17, 14, 16, 18, 19, 15, 20, 11, 13]

num_list = list(range(11, 21))
print(random.choice(num_list)) # 20 #리스트에서 무작위로 데이터 선택
print(random.sample(num_list, 3)) #[14, 16, 13] #num_list에서 3개 무작위로 뽑겠다. # 리스트에서 무작위로 n개의 데이터 선택
      
'''
import random
# 로또 번호 생성기1 - 중복 허용
# 1~45 범위에서 6개 추출한 후 리스트로 생성
# 매개변수 X, 반환값 O
def make_lotto1():
    # 로또번호 리스트 정의
    lotto_list = []
    for i in range(6):
        data = random.randint(1, 45)
        lotto_list.append(data)
    return print(f' 로또 번호 => {lotto_list} ')

make_lotto1()
make_lotto1()
make_lotto1()

#결과
#  로또 번호 => [29, 44, 44, 11, 44, 13] 
#  로또 번호 => [13, 29, 25, 1, 40, 5]
#  로또 번호 => [26, 17, 43, 13, 23, 20]

# 로또 번호 생성기2 - 중복 X
# 1~45 범위에서 6개 추출한 후 리스트로 생성
# 매개변수 X, 반환값 O
def make_lotto2():
    num_list = list(range(1, 46)) # 1~45로 구성된 리스트 생성
    lotto_list = random.sample(num_list, 6) # 리스트에서 6개 무작위로 추출
    return print(f' 로또 번호 => {lotto_list} ')

make_lotto2()
make_lotto2()
make_lotto2()

#  로또 번호 => [29, 25, 34, 43, 6, 31]
#  로또 번호 => [25, 28, 40, 32, 22, 10]
#  로또 번호 => [43, 24, 23, 10, 29, 36]


#Quiz
import random
stList = [ '김철수', '홍길동', '기대주', '이동백',
'하민수', '김영희', '소민주', '신은수' ]

print(f'월 청소 당번은? {random.sample(stList,2)}')
print(f'화 청소 당번은? {random.sample(stList,2)}')
print(f'수 청소 당번은? {random.sample(stList,2)}')
print(f'목 청소 당번은? {random.sample(stList,2)}')
print(f'금 청소 당번은? {random.sample(stList,2)}')

#Quiz

가위바위보 게임을 함수와 random 모듈을 이용하여 만들어 보세요. 
- 함수를 호출하면 가위바위보 게임이 실행
- 컴퓨터의 선택은 random 모듈안에서 제공되어지는 함수를 이용하여 
    '가위', '바위', '보' 중 하나를 무작위로 선택
- 사용자가 입력한 값('가위', '바위', '보' 중 하나)에 따라 결과를 출력
  예시) 무승부!, 컴퓨터가 이겼습니다!, 당신이 이겼습니다!


import random

def play_rock_paper_scissors():
    
    choices = ['가위','바위','보']
    computer_choice = random.choice(choices)
    user_choice = input("가위, 바위, 보 중 하나를 선택하세요:")
    print(f'당신의 선택 : {user_choice}')
    print(f'컴퓨터의 선택 : {computer_choice}')
    if user_choice == '가위' :
        if computer_choice == '가위':
            print('무승부!') 
        elif computer_choice == '바위':
            print('컴퓨터가 이겼습니다!')
        else :
            print('당신이 이겼습니다!')  
    elif user_choice == '바위' :
        if computer_choice == '가위':
            print('당신이 이겼습니다!') 
        elif computer_choice == '바위':
            print('무승부!')
        else :
            print('컴퓨터가 이겼습니다!') 
    elif user_choice == '보' :
        if computer_choice('가위'):
            print('컴퓨터가 이겼습니다!') 
        elif computer_choice =='바위':
            print('당신이 이겼습니다!')
        else :
            print('무승부!')             
    else :
        print('잘못된 입력입니다. 가위, 바위, 보 중 하나를 선택하세요.')
    

play_rock_paper_scissors()