| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 통계학
- Slicing
- python
- 기계학습
- maplotlib
- pandas 메소드
- 스터디노트
- 머신러닝
- SQL
- barh
- MacOS
- 재귀함수
- 조합
- INSERT
- 등차수열
- 등비수열
- 리스트
- Folium
- 순열
- Machine Learning
- 문제풀이
- pandas
- plt
- 자료구조
- pandas filter
- numpy
- tree.fit
- matplotlib
- DataFrame
- 파이썬
Archives
- Today
- Total
코딩하는 타코야끼
[스터디 노트] Week2_4일차 [unit53 ~ 65] 본문
728x90
반응형
1. 중급 문제풀이 4 ~ 5 [unit 53 ~ 60]
📍 [연습문제] 클래스(02)
- TV클래스를 다음과 같은 상속 구조로 만들고 객체를 생성해 보자.

📎 모듈 코드
# smart_tv.py 코드
class Normal_tv:
def __init__(self, i=32, c="black", r="full-HD"):
self.inch = i
self.color = c
self.resolution = r
self.smart_tv = "off"
self.ai_tv = "off"
def turn_on(self):
print("TV power on!!")
def turn_off(self):
print("Tv power off!!")
def print_tv_info(self):
print(f"inch: {self.inch}inch")
print(f"color: {self.color}")
print(f"resolution: {self.resolution}")
print(f"smart_tv: {self.smart_tv}")
print(f"ai_tv: {self.ai_tv}")
class Tv4k(Normal_tv):
def __init__(self, i, c, r="4k"):
super().__init__(i, c, r)
def set_smart_tv(self, s):
self.smart_tv = s
class Tv8k(Normal_tv):
def __init__(self, i, c, r="8k", ):
super().__init__(i, c, r)
def set_smart_tv(self, s):
self.smart_tv = s
def set_ai_tv(self, s):
self.ai_tv = s
🔌 실행 코드
# 실행코드
import smart_tv as st
my4k = st.Tv4k("65", "silver", "4k")
my4k.set_smart_tv('on')
my4k.turn_on()
my4k.print_tv_info()
my4k.turn_off()
frien4k = st.Tv4k("55", "white", "4k")
frien4k.set_smart_tv('off')
frien4k.turn_on()
frien4k.print_tv_info()
frien4k.turn_off()
>>>
TV power on!!
inch: 65inch
color: silver
resolution: 4k
smart_tv: on
ai_tv: off
Tv power off!!
TV power on!!
inch: 55inch
color: white
resolution: 4k
smart_tv: off
ai_tv: off
Tv power off!!
📍 [연습문제] 클래스(03)
- 다음 명세서를 참고해서 도서 관리 프로그램을 만들어보자.

📎 모듈 코드
class Book:
def __init__(self, name, price, isbn):
self.name = name
self.price = price
self.isbn = isbn
class Book_repository:
def __init__(self):
self.bDic = {} # bDic 속성 초기화
def regist_book(self, b):
self.bDic[b.isbn] = b
def remove_book(self, isbn):
del self.bDic[isbn]
def print_books_info(self):
for isbn in self.bDic.keys():
b = self.bDic[isbn]
print(f"{b.name}, {b.price}, {b.isbn}")
def print_book_info(self, isbn):
if isbn in self.bDic:
b = self.bDic[isbn]
print(f"{b.name}, {b.price}, {b.isbn}")
else:
print("Lookup result does not exist")
🔌 실행 코드
import Book as bk
mybook_r = bk.Book_repository()
mybook_r.regist_book(bk.Book("python", 20000, "1234567890"))
mybook_r.regist_book(bk.Book("java", 26000, "2145153543"))
mybook_r.regist_book(bk.Book("C#", 220000, "4672474"))
mybook_r.print_books_info()
>>>
python, 20000, 1234567890
java, 26000, 2145153543
C#, 220000, 4672474
📍 [연습문제] 클래스(04)
- 다음 추상 클래스를 이용해서 한/영, 한/일 사전 클래스를 만들어보자.
📎 모듈 코드
from abc import ABCMeta
from abc import abstractmethod
class Abs_dictionary(metaclass = ABCMeta):
def __init__(self):
self.wordDic = {}
@abstractmethod
def regist_word(self, w1, w2):
pass
@abstractmethod
def remove_word(self, w1):
pass
@abstractmethod
def update_word(self, w1, w2):
pass
@abstractmethod
def search_word(self, w1):
pass
class Kor_to_Eng(Abs_dictionary):
def __init__(self):
super().__init__()
def regist_word(self, w1, w2):
print(f"[kor_to_eng] registword(): {w1} to {w2}")
self.wordDic[w1] = w2
def remove_word(self, w1):
print(f"[kor_to_eng] removeword(): {w1}")
del self.wordDic[w1]
def update_word(self, w1, w2):
print(f"[kor_to_eng] updatd_tword(): {w1} to {w2}")
self.wordDic[w1] = w2
def search_word(self, w1):
print(f"[kor_to_eng] search_eword(): {w1}")
return self.wordDic[w1]
def print_word(self):
for k in self.wordDic.keys():
print(f"{k}: {self.wordDic[k]}")
🔌 실행 코드
import dic as d
kTe = d.Kor_to_Eng()
kTe.regist_word("책", "book")
kTe.regist_word("나비", "butterfly")
kTe.regist_word("연필", "pencil")
kTe.regist_word("학생", "book")
kTe.regist_word("선생님", "book")
kTe.print_word()
>>>
[kor_to_eng] registword(): 책 to book
[kor_to_eng] registword(): 나비 to butterfly
[kor_to_eng] registword(): 연필 to pencil
[kor_to_eng] registword(): 학생 to book
[kor_to_eng] registword(): 선생님 to book
책: book
나비: butterfly
연필: pencil
학생: book
선생님: book
📍 [연습문제] 클래스(07)
- 다음과 같이 mp3 플레이어 클래스를 만들고 노래 등록 후 재생해보자.

📎 모듈 코드
from time import sleep
import random as rd
class Song:
def __init__(self, t, s, pt):
self.title = t
self.singer = s
self.play_time = pt
def print_song_info(self):
print(f"Title: {self.title}, Singer: {self.singer}, Play time: {self.play_time}")
class Player:
def __init__(self):
self.songList = []
self.isLoop = False
def add_song(self, s):
self.songList.append(s)
def play(self):
if self.isLoop:
while self.isLoop:
for s in self.songList:
print(f"Title: {s.title}, Singer: {s.singer}, Play Time: {s.play_time}sec")
sleep(s.play_time)
else:
for s in self.songList:
print(f"Title: {s.title}, Singer: {s.singer}, Play Time: {s.play_time}sec")
sleep(s.play_time)
def suffle(self):
rd.shuffle(self.songList)
def set_is_loop(self, flag):
self.isLoop = flag
🔌 실행 코드
import MP3 as m
s1 = m.Song("신호등", "이무진", 3)
s2 = m.Song("permision", "방탄소년단", 4)
s3 = m.Song("Butter", "방탄소년단", 2)
s4 = m.Song("Weekend", "태연", 5)
s5 = m.Song("돌아돌아", "조정석", 4)
player = m.Player()
player.add_song(s1)
player.add_song(s2)
player.add_song(s3)
player.add_song(s4)
player.add_song(s5)
player.set_is_loop(False)
player.suffle()
player.play()
>>>
Title: 돌아돌아, Singer: 조정석, Play Time: 4sec
Title: permision, Singer: 방탄소년단, Play Time: 4sec
Title: Weekend, Singer: 태연, Play Time: 5sec
Title: Butter, Singer: 방탄소년단, Play Time: 2sec
Title: 신호등, Singer: 이무진, Play Time: 3sec
⚡️ import sleep
- 이 함수는 프로그램 실행을 일정 시간 동안 일시 중단(또는 "잠시 잠들게" 하는) 기능을 합니다.
- sleep 함수의 인수는 "잠들" 시간을 초 단위로 표현한 것입니다.
- 이 값은 정수 또는 부동소수점(float) 숫자가 될 수 있습니다.
- 예를 들어, time.sleep(5) 는 프로그램을 5초 동안 일시 중지합니다.
- time.sleep(0.5) 는 프로그램을 0.5초, 즉 500밀리초 동안 일시 중지합니다.
2. 중급 문제풀이 6 ~ 7 [unit 61 ~ 65]
📍 [연습문제] 예외처리(02)
- 1부터 1000까지의 소수인 난수 10개를 생성하되, 소수가 아니면 사용자 예외가 발생하도록 프로그램을 만들어보자.

📎 모듈 코드
class Not_prime_exception(Exception):
def __init__(self, n):
super().__init__(f"{n} is not prime number.")
class Prime_exception(Exception):
def __init__(self, n):
super().__init__(f"{n} is prime number.")
def is_prime(number):
flag = True
for n in range(2, number):
if number % 2 == 0:
flag = False
break
if flag == False:
raise Not_prime_exception(number)
else:
raise Prime_exception(number)
🔌 실행 코드
import random
import prime_module as pm
prime_numbers = []
n = 0
while n < 10:
rn = random.randint(2, 1000)
if rn not in prime_numbers:
try:
pm.is_prime(rn)
except pm.Not_prime_exception as e:
print(e)
continue
except pm.Prime_exception as e:
print(e)
prime_numbers.append(rn)
else:
print(f"{rn} is overlap number.")
continue
n += 1
print(f"prime_numbers: {prime_numbers}")
>>>
831 is prime number.
691 is prime number.
543 is prime number.
514 is not prime number.
146 is not prime number.
72 is not prime number.
277 is prime number.
712 is not prime number.
791 is prime number.
136 is not prime number.
666 is not prime number.
579 is prime number.
182 is not prime number.
209 is prime number.
93 is prime number.
780 is not prime number.
64 is not prime number.
110 is not prime number.
24 is not prime number.
387 is prime number.
931 is prime number.
prime_numbers: [831, 691, 543, 277, 791, 579, 209, 93, 387, 931]
📍 [연습문제] 예외처리(03)
- 상품 구매에 따른 ‘총 구매 금액’을 출력하되, 다음과 같이 개수가 잘 못 입력된 경우 별도로 출력하도록 프로그램을 만들어보자.

📎 모듈 코드
g1_price = 1200; g2_price = 1000; g3_price = 800;
g4_price = 2000; g5_price = 900
def calculator(*gcs):
gcsDic = {}
again_cnt_input = {}
for idx, gc in enumerate(gcs):
try:
gcsDic[f"g{idx + 1}"] = int(gc)
except Exception as e:
again_cnt_input[f"g{idx+1}"] = gc
print(e)
total_price = 0
for g in gcsDic.keys():
total_price += globals()[f"{g}_price"] * gcsDic[g]
print("-"*30)
print(f"총 구매 금액: {total_price}원")
print("-"*14, "미결제 항목", "-"*14)
for g in again_cnt_input.keys():
print(f"상품: {g} \\t 구매 개수: {again_cnt_input[g]}")
🔌 실행 코드
import calculator_purchase as cp
g1_cnt = input("goods1 구매 개수: ")
g2_cnt = input("goods2 구매 개수: ")
g3_cnt = input("goods3 구매 개수: ")
g4_cnt = input("goods4 구매 개수: ")
g5_cnt = input("goods5 구매 개수: ")
cp.calculator(g1_cnt, g2_cnt, g3_cnt, g4_cnt, g5_cnt)
>>>
goods1 구매 개수: 한개
goods2 구매 개수: 3
goods3 구매 개수: 1
goods4 구매 개수:
goods5 구매 개수: 2
invalid literal for int() with base 10: '한개'
invalid literal for int() with base 10: ''
------------------------------
총 구매 금액: 5600원
-------------- 미결제 항목 --------------
상품: g1 구매 개수: 한개
상품: g4 구매 개수:
📍 [연습문제] 텍스트파일(01)
- 회원 계정별 텍스트 파일을 생성한 후 회원 본인 파일에 ‘한 줄 일기’를 쓰고 읽는 프로그램을 만들어보자.

📎 모듈 코드
import time
def write_diary(u, f, d):
lt = time.localtime()
time_str = time.strftime("%Y-%m-%d %I:%M:%s %p", lt)
file_path = u + f
with open(file_path, "a") as f:
f.write(f"[{time_str}] {d}\\n")
def read_diary(u, f):
file_path = u + f
datas = []
with open(file_path, "r") as f:
datas = f.readlines()
return datas
🔌 실행 코드
import diary as d
members = {}
uri = '/Users/Desktop/mose/zero-base'
def print_members():
for m in members.keys():
print(f"ID: {m} \\t PW: {members[m]}")
while True:
select_num = int(input("1.회원가입 2.한줄일기쓰기 3.한줄일기보기 4.종료 "))
if select_num == 1:
mid = input("input ID: ")
mpw = input("input PW: ")
members[mid] = mpw
print_members()
elif select_num == 2:
mid = input("input ID: ")
mpw = input("input PW: ")
if mid in members and members[mid] == mpw:
print("login success!!")
file_name = "myDiary_" + mid + ".txt"
data = input("오늘 하루 인상 깊은 일을 기록하세요. ")
d.write_diary(uri, file_name, data)
else:
print("login Fail!!")
print_members()
elif select_num == 3:
mid = input("input ID: ")
mpw = input("input PW: ")
if mid in members and members[mid] == mpw:
print("login success!!")
file_name = "myDiary_" + mid + ".txt"
data = d.read_diary(uri, file_name)
for d in data:
print(d, end="")
else:
print("login Fail!!")
print_members()
elif select_num == 4:
print("Bye")
break
>>>
1.회원가입 2.한줄일기쓰기 3.한줄일기보기 4.종료 1
input ID: chan
input PW: 1234
ID: chan PW: 1234
1.회원가입 2.한줄일기쓰기 3.한줄일기보기 4.종료 2
input ID: chan
input PW: 1234
login success!!
오늘 하루 인상 깊은 일을 기록하세요. 비가 많이온다
1.회원가입 2.한줄일기쓰기 3.한줄일기보기 4.종료 3
input ID: chan
input PW: 1234
login success!!
[2023-07-14 10:14:22 PM] 비가 많이온다
1.회원가입 2.한줄일기쓰기 3.한줄일기보기 4.종료 4
Bye
⚡️실습 코드 파일⚡️
반응형
'zero-base 데이터 취업 스쿨 > 스터디 노트' 카테고리의 다른 글
| [스터디 노트] Week3_1일차 [unit15 ~ 30] - 기초수학 (0) | 2023.07.19 |
|---|---|
| [스터디 노트] Week2_5일차 [unit1 ~ 14] - 기초수학 (0) | 2023.07.19 |
| [스터디 노트] Week2_3일차 [unit_40 ~ 52] (0) | 2023.07.15 |
| [스터디 노트] Week2_2일차[unit20 ~ 39] (0) | 2023.07.14 |
| [스터디 노트] Week2_1일차[unit1 ~ 19] (0) | 2023.07.11 |