Topic 2: 유용한 내장 모듈들 🧰
🎯 학습 목표
파이썬에 내장된 유용한 모듈들을 사용하는 방법을 배워요!
- random 모듈로 무작위 기능 구현하기
- math 모듈로 수학 계산하기
- datetime 모듈로 날짜와 시간 다루기
- os 모듈로 시스템 작업하기
🎲 random 모듈 - 랜덤의 마법
숫자 뽑기
import random
# 정수 범위에서 랜덤 선택
dice = random.randint(1, 6)
print(f"주사위: {dice}")
# 실수 범위에서 랜덤 선택
probability = random.random() # 0.0 ~ 1.0
print(f"확률: {probability:.2f}")
# 특정 범위의 실수
score = random.uniform(0, 100)
print(f"점수: {score:.1f}")
리스트에서 선택하기
import random
# 하나 선택
fruits = ["사과", "바나나", "딸기", "포도", "오렌지"]
today_fruit = random.choice(fruits)
print(f"오늘의 과일: {today_fruit}")
# 여러 개 선택 (중복 없이)
winners = random.sample(fruits, 3)
print(f"당첨자 3명: {winners}")
# 리스트 섞기
cards = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
random.shuffle(cards)
print(f"섞인 카드: {cards[:5]}...") # 처음 5장만 보기
🔢 math 모듈 - 수학의 도구상자
기본 수학 함수
import math
# 제곱근과 거듭제곱
print(f"√16 = {math.sqrt(16)}")
print(f"2^10 = {math.pow(2, 10)}")
# 올림, 내림, 반올림
price = 12345.67
print(f"올림: {math.ceil(price)}") # 12346
print(f"내림: {math.floor(price)}") # 12345
print(f"반올림: {round(price)}") # 12346
# 절댓값
print(f"|-10| = {abs(-10)}")
고급 수학 함수
import math
# 삼각함수 (라디안 단위)
angle = math.pi / 4 # 45도
print(f"sin(45°) = {math.sin(angle):.3f}")
# 로그 함수
print(f"log10(100) = {math.log10(100)}") # 2.0
# 팩토리얼과 조합
print(f"5! = {math.factorial(5)}") # 120
print(f"C(5,2) = {math.comb(5, 2)}") # 10 (5개 중 2개 선택)
📅 datetime 모듈 - 시간 여행자
현재 시간 다루기
import datetime
# 현재 날짜와 시간
now = datetime.datetime.now()
print(f"현재 시각: {now}")
# 날짜만, 시간만
today = datetime.date.today()
print(f"오늘 날짜: {today}")
# 포맷 지정하기
formatted = now.strftime("%Y년 %m월 %d일 %H시 %M분")
print(f"한국식 표현: {formatted}")
날짜 계산하기
import datetime
# 며칠 후, 며칠 전
today = datetime.date.today()
week_later = today + datetime.timedelta(days=7)
print(f"일주일 후: {week_later}")
# 생일까지 며칠?
birthday = datetime.date(2024, 12, 25) # 크리스마스
days_left = (birthday - today).days
print(f"크리스마스까지 {days_left}일 남았어요!")
# 나이 계산
birth_year = 2000
age = today.year - birth_year
print(f"{birth_year}년생은 올해 {age}살")
🖥️ os 모듈 - 시스템 관리자
기본 시스템 정보
import os
# 현재 작업 디렉토리
current_dir = os.getcwd()
print(f"현재 위치: {current_dir}")
# 파일 목록 보기
files = os.listdir()
print(f"파일 개수: {len(files)}개")
# 운영체제 정보
print(f"운영체제: {os.name}") # 'nt'(Windows) 또는 'posix'(Mac/Linux)
경로 다루기
import os
# 경로 합치기 (운영체제별로 자동 처리)
folder = "documents"
filename = "report.txt"
full_path = os.path.join(folder, filename)
print(f"전체 경로: {full_path}")
# 파일 존재 확인
if os.path.exists("data.txt"):
print("파일이 있어요!")
size = os.path.getsize("data.txt")
print(f"파일 크기: {size} bytes")
💪 실용적인 종합 예제
🎮 가위바위보 게임
import random
def play_rps():
"""가위바위보 게임"""
choices = ["가위", "바위", "보"]
while True:
# 사용자 입력
user = input("\n가위, 바위, 보 중 하나를 선택하세요 (종료: q): ")
if user == 'q':
print("게임을 종료합니다!")
break
if user not in choices:
print("잘못된 입력입니다!")
continue
# 컴퓨터 선택
computer = random.choice(choices)
print(f"컴퓨터: {computer}")
# 승부 판정
if user == computer:
print("비겼습니다! 🤝")
elif (user == "가위" and computer == "보") or \
(user == "바위" and computer == "가위") or \
(user == "보" and computer == "바위"):
print("이겼습니다! 🎉")
else:
print("졌습니다... 😢")
# 게임 실행
play_rps()
📊 수학 퀴즈 프로그램
import random
import math
def math_quiz():
"""수학 퀴즈 프로그램"""
score = 0
questions = 5
print("🧮 수학 퀴즈를 시작합니다!\n")
for i in range(questions):
# 랜덤 문제 생성
a = random.randint(1, 20)
b = random.randint(1, 20)
# 문제 출력
print(f"문제 {i+1}: {a} + {b} = ?")
# 답 입력
try:
answer = int(input("답: "))
if answer == a + b:
print("정답입니다! ✅\n")
score += 1
else:
print(f"틀렸습니다. 정답은 {a + b}입니다. ❌\n")
except ValueError:
print("숫자를 입력해주세요!\n")
# 결과 발표
percentage = (score / questions) * 100
print(f"결과: {questions}문제 중 {score}개 정답!")
print(f"점수: {percentage:.0f}점")
# 퀴즈 실행
math_quiz()
💡 퀴즈: 내장 모듈 이해도 체크
Q1. 1부터 100 사이의 랜덤 정수를 만드는 코드는?
💡 정답 확인
정답: random.randint(1, 100)
randint(a, b)
는 a부터 b까지(b 포함) 범위의 정수를 반환해요random()
은 0.0~1.0 사이의 실수를 반환
Q2. 오늘부터 30일 후의 날짜를 구하는 코드는?
import datetime
today = datetime.date.today()
# 30일 후는?
💡 정답 확인
정답:
future = today + datetime.timedelta(days=30)
timedelta
를 사용해서 날짜를 더하거나 뺄 수 있어요!
✅ 유용한 내장 모듈 마스터 체크리스트
✅ 유용한 내장 모듈 마스터 체크리스트
🚀 다음 단계
내장 모듈들을 마스터했나요? 이제 더 강력한 기능을 제공하는 외부 패키지를 설치하고 사용하는 방법을 배워볼게요!
Last updated on