(member.py)
class Member:
def __init__(self, i, p):
self.id = i
self.pw = p
class MemberRepository:
def __init__(self):
self.members = {}
def addMember(self, m):
self.members[m.id] = m.pw
def loginMember(self, i, p):
isMember = i in self.members
if isMember and self.members[i]==p:
print(f'{i}: log-in success!!')
else:
print(f'{i}: log-in fail!!')
def removeMember(self, i, p):
self.members[i]
def printMembers(self):
for mk in self.members.keys():
print(f'ID: {mk}')
print(f'PW: {self.members[mk]}')
(ex.py)
import member as mb
mems = mb.MemberRepository()
for i in range(3):
mId = input('아이디 입력: ')
mPw = input('비밀번호 입력: ')
mem = mb.Member(mId, mPw)
mems.addMember(mem)
mems.printMembers()
mems.loginMember('abc@gmail.com', '1234')
mems.loginMember('def@gmail.com', '5678')
mems.loginMember('ghi@gmail.com', '9012')
mems.removeMember('abc@gmail.com', '1234')
mems.printMembers()
맨아래 removeMember가 제대로 작동되지 않았는데, 다시 확인해봐야겠다.
class NormalTv:
def __init__(self, i=32, c='black', r='full-HD'):
self.inch = i
self.color = c
self.resolution = r
self.smartTv = 'off'
self.aiTv = 'off'
def turnOn(self):
print('TV power on!!')
def turnOff(self):
print('TV power off!!')
def printTvInfo(self):
print(f'inch: {self.inch}inch')
print(f'color: {self.color}')
print(f'resolution: {self.resolution}')
print(f'smartTv: {self.smartTv}')
print(f'aiTv: {self.aiTv}')
class Tv4k(NormalTv):
def __init__(self, i, c, r='4k'):
super().__init__(i, c, r)
def setSmartTv(self, s):
self.smartTv = s
class Tv8k(NormalTv):
def __init__(self, i, c, r='8k'):
super().__init__(i, c, r)
def setSmartTv(self, s):
self.smartTv = s
def setAiTv(self, a):
self.aiTv = a
import smartTV as st
my4kTv = st.Tv4k('65', 'silver', '4k')
my4kTv.setSmartTv('on')
my4kTv.turnOn()
my4kTv.printTvInfo()
my4kTv.turnOff()
friend8kTv = st.Tv8k('75', 'black', '8k')
friend8kTv.setSmartTv('on')
friend8kTv.setAiTv('on')
friend8kTv.turnOn()
friend8kTv.printTvInfo()
friend8kTv.turnOff()
(book.py)
class Book:
def __init__(self, name, price, isbn):
self.bName = name
self.bPrice = price
self.bIsbn = isbn
class BookRepository:
def __init__(self):
self.bDic = {}
def registBook(self, b):
self.bDic[b.bIsbn] = b
def removeBook(self, isbn):
del self.bDic[isbn]
def printBooksInfo(self):
for isbn in self.bDic.keys():
b = self.bDic[isbn]
print(f'{b.bName}, {b.bPrice}, {b.bIsbn}')
def printBookInfo(self, isbn):
if isbn in self.bDic:
b = self.bDic[isbn]
print(f'{b.bName}, {b.bPrice}, {b.bIsbn}')
else:
print('Lookup result does not exist')
(ex.py)
import book as bk
myBRepository = bk.BookRepository()
myBRepository.registBook(bk.Book('python', 20000, '1234567890'))
myBRepository.registBook(bk.Book('java', 25000, '85214688521'))
myBRepository.registBook(bk.Book('c/c++', 27000, '95123574658'))
myBRepository.printBooksInfo()
print()
myBRepository.printBookInfo('85214688521')
myBRepository.printBookInfo('1234567890')
myBRepository.removeBook('1234567890')
print()
myBRepository.printBooksInfo()
(ADictionary.py)
from abc import ABCMeta
from abc import abstractmethod
class AbsDictionary(metaclass=ABCMeta):
def __init__(self):
self.wordDic = {}
@abstractmethod
def registWord(self, w1, w2):
pass
@abstractmethod
def removeWord(self, w1):
pass
@abstractmethod
def updateWord(self, w1, w2):
pass
@abstractmethod
def searchWord(self, w1):
pass
class KorToEng(AbsDictionary):
def __init__(self):
super().__init__()
def registWord(self, w1, w2):
print(f'[KorToEng] registWord() : {w1} to {w2}')
self.wordDic[w1] = w2
def removeWord(self, w1):
print(f'[KorToEng] removeWord() : {w1}')
del self.wordDic[w1]
def updateWord(self, w1, w2):
print(f'[KorToEng] updateWord() : {w1} to {w2}')
self.wordDic[w1] = w2
def searchWord(self, w1):
print(f'[KorToEng] searchWord() : {w1}')
return self.wordDic[w1]
def printWords(self):
for k in self.wordDic.keys():
print(f'{k}: {self.wordDic[k]}')
(ex.py)
import ADictionary as dic
kTe = dic.KorToEng()
kTe.registWord('책', 'bok')
kTe.registWord('나비', 'buttterfly')
kTe.registWord('연필', 'pencil')
kTe.registWord('학생', 'student')
kTe.registWord('선생님', 'teacher')
kTe.printWords()
kTe.updateWord('책', 'book')
kTe.printWords()
추상 메소드: 상속받고있는 것 중 반드시 구현하여 써야하는 것(강조)
(dice.py)
import random as rd
class Dice:
def __init__(self):
self.cNum = 0
self.uNum = 0
def setCnum(self):
print('[Dice] setCnum()')
self.cNum = rd.randint(1,6)
def setUnum(self):
print('[Dice] setUnum()')
self.uNum = rd.randint(1, 6)
def startGame(self):
print('[Dice] startGame()')
self.setCnum()
self.setUnum()
def printResult(self):
print('[Dice] printResult()')
if self.cNum == 0 or self.uNum == 0:
print('주사위 숫자 설정 전 입니다.')
else:
if self.cNum > self.uNum:
print(f'컴퓨터 vs 유저 : {self.cNum} vs {self.uNum} >> 컴퓨터 승!')
elif self.cNum < self.uNum:
print(f'컴퓨터 vs 유저 : {self.cNum} vs {self.uNum} >> 유저 승!')
elif self.cNum == self.uNum:
print(f'컴퓨터 vs 유저 : {self.cNum} vs {self.uNum} >> 무승부!')
(ex.py)
import dice
dc = dice.Dice()
dc.startGame()
dc.printResult()
(car.py)
import random
class Car:
def __init__(self, n='fire car', c='red', s=200):
self.name = n
self.color = c
self.max_speed = s
self.distance = 0
def printCarInfo(self):
print(f'name: {self.name}, color: {self.color}, max_speed: {self.max_speed}')
def controlSpeed(self):
return random.randint(0, self.max_speed)
def getDistanceForHour(self):
return self.controlSpeed() * 1
(racing.py)
from time import sleep
class CarRacing:
def __init__(self):
self.cars = []
self.rankings = []
def startRacing(self):
for i in range(10):
print(f'Racing: {i+1}바퀴')
for car in self.cars:
car.distance += car.getDistanceForHour()
sleep(1)
self.printCurrentCarDistance()
def printCurrentCarDistance(self):
for car in self.cars:
print(f'{car.name}: {car.distance}\t\t', end="")
print()
def addCar(self, c):
self.cars.append(c)
(ex.py)
from car_game import racing as rc
from car_game import car
myCarGame = rc.CarRacing()
car01 = car.Car('Car01', 'White', 250)
car02 = car.Car('Car02', 'Black', 200)
car03 = car.Car('Car03', 'Yellow', 220)
car04 = car.Car('Car04', 'Red', 280)
car05 = car.Car('Car05', 'Blue', 150)
myCarGame.addCar(car01)
myCarGame.addCar(car02)
myCarGame.addCar(car03)
myCarGame.addCar(car04)
myCarGame.addCar(car05)
myCarGame.startRacing()
(mp3player.py)
from time import sleep
import random
class Song:
def __init__(self, t, s, pt):
self.title = t
self.singer = s
self.play_time = pt
def printSongInfo(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 addSong(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 shuffle(self):
random.shuffle(self.songList)
def setIsLoop(self, flag):
self.isLoop = flag
(ex.py)
import mp3player as mp3
s1 = mp3.Song('Yet to Come', '방탄소년단', 3)
s2 = mp3.Song('Permission to Dance', '방탄소년단', 4)
s3 = mp3.Song('Butter', '방탄소년단', 2)
s4 = mp3.Song('달려라 방탄', '방탄소년단', 5)
s5 = mp3.Song('Dynamite', '방탄소년단', 3)
player = mp3.Player()
player.addSong(s1)
player.addSong(s2)
player.addSong(s3)
player.addSong(s4)
player.addSong(s5)
player.setIsLoop(False)
player.shuffle()
player.play()
셔플을 했기 때문에 재생순서가 바뀌었다.