본문 바로가기
방통대/파이썬

[파이썬] 11-2 유용한 모듈

by 꿈꾸는 몽나 2024. 5. 2.
728x90

math 모듈

: 수학적 계산 문제를 해결하기 위한 수학 함수 및 상수의 집합

-> C언어 표준에 정의된 수학적 계산 함수를 내장

-> 파이, e와 같은 상수 제공

 

 

 

math 모듈 멤버

 

 

 

 

random 모듈

-난수 : 특정한 배열 순서나 규칙적인 의미가 없는, 임의의 수를 의미

-난수 관련된 생성 기능을 제공하는 모듈

-> 특정 범위의 난수를 발생

 

*번호들 사이에는 규칙이 없으나 프로그램을 실행할 때마다 동일한 값들이 도출되는 난수 발생

-> 같은 번호가 계속 나오면 시드를 바꾸어주어야 한다.

 

 

 

random 모듈 멤버

 

*가위-바위-보 게임,  로또 추첨 프로그램, 스무고개 프로그램

-가위-바위-보 게임

 

 

 

 

-로또 추첨 프로그램

코드:

import random

#input을 통해 들어온 긴 문자열을 콤마(,) 기준으로 분리
#split(분할 기준되는 문자) : 여기서는 콤마와 스페이스 기준으로 분리
#현재 guess_str에는 숫자로 된 문자들이 들어있다.
guess_str = input("1~45 번호 6개를 쉼표로 분리하여 입력하세요: ").split(", ")
guess_list = list()

#guess_str의 값들을 하나하나 정수로 변환하여 guess_list에 하나씩 추가(append)한다.
#숫자로 된 문자열을 하나씩 읽어 int형으로 받은 뒤 guess_list에 저장
for i in guess_str:
    guess_list.append(int(i))
    
#1부터 45까지의 값 중 6개의 값을 랜덤으로 추출
lotto_list = random.sample(range(1, 46, 1), 6)


print("예상 번호는", guess_list, "입니다.")
print("추첨 번호는", lotto_list, "입니다.")

hit_count = 0;

#비교연산자로 사용된 in
for guess in guess_list:
    if guess in lotto_list:
        hit_count = hit_count + 1
        
print("축하합니다" + str(hit_count) + "개 맞혔습니다.")

 

 

출력:

 

 

 

 

 

-20번의 기회 안에 1 ~ 1000 사이의 숫자를 맞히는 스무고개 프로그램을 작성하시오.

코드:

import random

#정수를 무작위로 추출
hit_number = random.randint(1, 1001)

#1~20까지 들어있는 리스트를 생성하여 현재 몇 번째 시도인지를 출력할 예정
guess_count_list = range(1, 21, 1)

passfail = False

for guess_count in guess_count_list :

    guess = int(input("숫자를 맞혀보세요("+str(guess_count)+"번째 시도): "))

    if hit_number == guess:
        passfail = True
        break;
    elif hit_number > guess:
        print(str("guess") + "보다 큽니다.", end="")
    else:
        print(str("guess") + "보다 작습니다.", end="")
        
if passfail == True:
    print("맞췄습니다. 축하합니다")
else:
    print("모든 기회를 다 사용하셨습니다. 다음에 다시 도전하세요")

 

 

출력:

 

 

 

삼각형 넓이 계산 프로그램

: 두 변의 길이 a, b와 끼인각 a인 삼각형의 넓이를 구하는 프로그램을 작성하시오.

 

코드:

import math

a, b = 10, 20

#60도를 호도법으로 바꾼 값의 sin값 산출
area = 1 / 2 * a * b * math.sin(math.radians(60))

print(area)

 

 

출력:

 

또 다른 코드:

import math

#모듈 속 함수를 사용하는 또다른 방법
#Line5처럼 특정 함수 몇 가지만 부분적으로 호출하게 되면 해당 함수는 모듈명.을 쓰지 않고 직접 사용 가능
from math import sin

a, b = 10, 20

#60도를 호도법으로 바꾼 값의 sin값 산출
area = 1 / 2 * a * b * math.sin(math.radians(60))

print(area)

 

 

 

 

time모듈

: 에포크 시간을 얻어 다양한 형식으로 표시하는 기능 제공

 

 

 

time 모듈 멤버

 

 

 

 

소수 찾기 프로그램

: 1 ~ 1000 사이에 소수를 찾고 실행 시간을 출력하는 프로그램을 작성하시오.

import time

#1970.1.1.이후로 경과된 시점을 초 단위로 환산
start_time = time.time()

def is_prime(x):
    for i in range(2, x):
        #i로 나누었을 때 나누어 떨어지면(나머지가 0이면) 소수가 아니므로 False 반환
        if x % i == 0:
            return False
        
    return True
    
prime_count = 0

for i in range(2, 5001):
    if is_prime(i):
        prime_count = prime_count + 1
        print(i, end = ", ")
        
end_time = time.time()
print(end_time - start_time, "초 실행했습니다.")

 

출력:

728x90

'방통대 > 파이썬' 카테고리의 다른 글

[파이썬] 12-1 파일  (0) 2024.05.09
[파이썬] 11강. 모듈 연습 문제  (0) 2024.05.02
[파이썬] 11-1 모듈  (2) 2024.05.02
[파이썬] 10강. 객체지향 연습 문제  (0) 2024.04.25
[파이썬] 10-3 객체지향의 활용  (2) 2024.04.25