기존의 영단어 코드를 활용하여 기능을 추가하기!!
문제
아래 조건을 만족하는 영어 단어장을 만들어보자
- '수정하기' 기능을 vocab에 추가
- 수정할 단어를 선택하세요: apple
- 선택한 단어가 없습니다.
- apple 의 뜻을 입력하세요: 사과
- apple 의 레벨을 입력하세요:1
- 수정되었습니다.
- 수정할 단어를 선택하세요: apple
- '삭제하기' 기능 추가
- 삭제할 단어를 선택하세요: apple
- 선택한 단어가 없습니다.
- 삭제되었습니다.
- 삭제할 단어를 선택하세요: apple
- 불러오기 메뉴 변경
- 프로그램 시작시 기존에 단어장 파일이 존재하는지 확인하고 있으면 그 파일에 있는 데이터를 메모리에 불러옴(없으면 스킵)
- 메뉴 4번을 삭제
답
wordList = []
filename = 'words.txt'
class Word:
def __init__(self, eng, kor, lev=1):
self.eng = eng
self.kor = kor
self.lev = lev
def setEng(self, eng):
self.eng = eng
def getEng(self):
return self.eng
def setKor(self, kor):
self.kor = kor
def getKor(self):
return self.kor
def setLev(self, lev):
self.lev = lev
def getLev(self):
return self.lev
class WordService:
def insertWord(self):
eng = input('단어를 입력하세요: ')
kor = input('뜻을 입력하세요: ')
lev = input('레벨을 입력하세요: ')
word = Word(eng, kor, lev)
wordList.append(word)
print('등록되었습니다.')
def printAll(self):
for data in wordList:
print(data.getEng() + ' : ' + data.getKor() + ' (레벨 ' + str(data.getLev()) + ')')
def saveAll(self):
with open(filename, 'w') as f:
for data in wordList:
f.write(f'{data.getEng()},{data.getKor()},{data.getLev()}\n')
print('파일에 저장했습니다')
def loadData(self):
try:
with open(filename, 'r') as f:
while True:
line = f.readline()
if line:
data = line.strip().split(',')
wordList.append(Word(data[0], data[1], int(data[2])))
else:
break
print('데이터를 불러왔습니다')
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
def modifyeWord(self):
target_word = input('수정할 단어를 선택하세요: ')
found = False
for data in wordList:
if data.getEng() == target_word:
found = True
new_kor = input(f'{target_word}의 뜻을 입력하세요: ')
new_lev = input(f'{target_word}의 레벨을 입력하세요: ')
data.setKor(new_kor)
data.setLev(new_lev)
print('수정되었습니다.')
break
if not found:
print('선택한 단어가 없습니다.')
def deleteWord(self):
target_word = input('삭제할 단어를 선택하세요: ')
found = False
for data in wordList:
if data.getEng() == target_word:
found = True
wordList.remove(data)
print('삭제되었습니다.')
break
if not found:
print('선택한 단어가 없습니다.')
class Menu:
def __init__(self):
self.service = WordService()
def run(self):
self.service.loadData()
while True:
try:
menu = int(input('1.등록하기 2.출력하기 3.저장하기 4.수정하기 5.삭제하기 6.종료하기'))
if menu == 1:
self.service.insertWord()
elif menu == 2:
self.service.printAll()
elif menu == 3:
self.service.saveAll()
elif menu == 4:
self.service.modifyeWord()
elif menu == 5:
self.service.deleteWord()
elif menu == 6:
print('프로그램을 종료합니다')
break
except Exception as e:
print(e)
print('다시 입력하세요!')
start = Menu()
start.run()
결과
- 불러오기 메뉴 변경
- 프로그램 시작시 기존에 단어장 파일이 존재하는지 확인하고 있으면 그 파일에 있는 데이터를 메모리에 불러옴(없으면 스킵) >>> 프로그램 시작시 단어장 파일 존재 확인 후 결과 출력
- 메뉴 4번을 삭제 >>> 기존의 '불러오기' 대신 '수정하기'로 변경
- '삭제하기' 기능 추가
- 삭제할 단어를 선택하세요: apple
- 선택한 단어가 없습니다.
- 삭제되었습니다.
- 삭제할 단어를 선택하세요: apple
- '수정하기' 기능을 vocab에 추가
- 수정할 단어를 선택하세요: apple
- 선택한 단어가 없습니다.
- apple 의 뜻을 입력하세요: 사과
- apple 의 레벨을 입력하세요:1
- 수정되었습니다.
- 수정할 단어를 선택하세요: apple
'파이썬' 카테고리의 다른 글
과제-파이썬 + 데이터베이스를 활용한 과제(병원 인사 관리 시스템_ver2) (0) | 2024.03.28 |
---|---|
26. 과제-DB(sql)를 이용한 단어장 만들기 (0) | 2024.03.28 |
24. 디렉토리 관리 프로그램 & 과제 (0) | 2024.03.22 |
23. 파일 입출력 라이브러리 (0) | 2024.03.21 |
22. 변수 타입 어노테이션 (0) | 2024.03.21 |