- 회원가입 클래스와 회원정보를 관리하는 클래스를 만들고 회원가입 로그인 기능을 구현해보자.
회원가입 / 전체회원 조회/ 로그인 / 회원 정보 삭제 후 전체회원 조회
실행파일
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() # 회원삭제 후 전 회원 출력
클래스파일
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 # 키값 = id, 밸류값 = pw
def loginMember(self, i, p):
isMember = i in self.members # members에 id가 있으면
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): # 회원 삭제
del self.members[i]
def printMembers(self):
for mk in self.members.keys():
print(f'ID : {mk}')
print(f'PW : {self.members[mk]}')
- TV클래스를 다음과 같은 상속 구조로 만들고 객체를 생성해 보자.
NormalTv
속성 : inch, color, resolution, smartTv, aiTv
기능 : turnOn(), trunOff(), printTvInfo()
Normal ← Tv4K
기능 : setSmartTv
rmal ← Tv8K
기능 : setSmartTv, setAitv()
실행파일
import smartTv as st
# my4KTv = st.Tv4K('65', 'silver', '4K')
# my4KTv.setSmartTv('on')
# my4KTv.trunOn()
# my4KTv.printTvInfo()
# my4KTv.trunOff()
#
#
# friend4KTv = st.Tv4K('55', 'white', '4K')
# friend4KTv.setSmartTv('off')
# friend4KTv.trunOn()
# friend4KTv.printTvInfo()
# friend4KTv.trunOff()
my8KTv = st.Tv8K('75', 'black', '8K')
my8KTv.setSmartTv('on')
my8KTv.setAiTv('on')
my8KTv.trunOn()
my8KTv.printTvInfo()
my8KTv.trunOff()
friend8KTv = st.Tv8K('86', 'red', '8K')
friend8KTv.setSmartTv('on')
friend8KTv.setAiTv('off')
friend8KTv.trunOn()
friend8KTv.printTvInfo()
friend8KTv.trunOff()
클래스파일
class normalTv:
def __init__(self, i = 32, c = 'black', r = 'full-HD'): # 32인치, black 색상, full-HD
self.inch = i
self.color = c
self.resolution = r
self.smartTv = 'off'
self.aiTv = 'off'
def trunOn(self):
print('TV power on!!')
def trunOff(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): # normalTv 상속
def __init__(self, i, c, r = '4K'):
super().__init__(i, c, r) # 상위 클래스에 다 올려줌
def setSmartTv(self, s):
self.smartTv = s
class Tv8K(normalTv): # 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
- 다음 명세서를 참고해서 도서 관리 프로그램을 만들어보자.'
서정보(도서명, 가격, isbn)
Book
속성 : name, price, isbn
서 저장소(도서 컨테이너, 도서 등록, 도서 삭제, 전체 도서 정보 출력, 도서 정보 출력)
BookRepository
속성 : bDic
기능 : registBook(), removeBook(), printBooksInfo(), printBookInfo()
실행파일
import book as bk
myBRepository = bk.BookRepository() # 책 저장소
myBRepository.registBook(bk.Book('python', 20000, '1234567890'))
myBRepository.registBook(bk.Book('java', 25000, '881972910'))
myBRepository.registBook(bk.Book('c/c++', 27000, '2939202020'))
myBRepository.printBooksInfo()
myBRepository.printBookInfo('2939202020')
myBRepository.removeBook('1234567890')
print()
myBRepository.printBooksInfo()
클래스파일
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')
- 다음 추상 클래스를 이용해서 한/영, 한/일 사전 클래스를 만들어보자.
실행파일
import ADictionary as dic
kTe = dic.KorToEng()
kTe.registWord('책', 'bok')
kTe.registWord('나비', 'butterfly')
kTe.registWord('연필', 'pencil')
kTe.registWord('학생', 'student')
kTe.registWord('선생님', 'teacher')
kTe.printWords()
kTe.updateWord('책', 'book')
kTe.printWords()
print(f'책 : {kTe.searchWord("책")}')
kTe.removeWord('책')
kTe.printWords()
클래스파일
# 추상 클래스를 사용하기 위해
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]}')
- 주사위 게임 클래스를 만들고 컴퓨터와 사용자의 게임 결과를 출력해 보자.
실행파일
import dice
dc = dice.Dice # 다이스 클래스 호출
dc.startGame() # 주사위 굴림
dc.printResult()
클래스파일
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} >> 무승부!!')
- 실행파일
클래스파일
- 실행파일
클래스파일
이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.