문제)
아래 조건을 만족하는 영어 단어장을 만들어보자 * 1.등록하기, 2.출력하기, 3.저장하기, 4.불러오기, 5.종료하기 6.수정하기 7.삭제하기 * 1을 선택했을 경우 * 단어를 입력하세요: apple * 뜻을 입력하세요: 사과 * 레벨을 입력하세요: 1 * 등록되었습니다. * 2를 선택했을 경우 * apple : 사과 (레벨 1) * 3을 선택했을 경우 * 저장되었습니다. (파일에 저장, words.txt) * 4를 선택했을 경우 * 프로그램 시작 시 기존에 단어장 파일이 존재하는지 확인하고 그 파일에 있는 데이터를 메모리에 불러옴(없으면 스킵) * 5를 선택했을 경우 * 프로그램을 종료합니다. * 6을 선택할 경우 * 수정할 단어를 선택하세요: apple * 선택한 단어가 없습니다.or * apple의 뜻을 입력하세요: 사과 * apple의 레벨을 입력하세요: 1 * 수정되었습니다. * 7을 선택할 경우 * 삭제할 단어를 선택하세요 : apple * 선택한 단어가 없습니다. * 삭제되었습니다. * 1~7까지의 숫자가 아닌 경우 * 다시 입력하세요! > 단, 프로그램은 클래스로 설계하도록 함 |
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): # 1
eng = input('단어를 입력하세요: ')
kor = input('뜻을 입력하세요: ')
lev = input('레벨을 입력하세요: ')
word = Word(eng, kor, lev)
wordList.append(word)
print('등록되었습니다.')
def printAll(self):
for data in wordList:
# apple : 사과 (레벨 1)
print(data.getEng() + ' : ' + data.getKor() + ' (레벨 ' + 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):
with open(filename, 'r') as f:
while True:
line = f.readline()
if line:
data = line.strip().split(',')
wordList.append(Word(data[0], data[1], data[2]))
else:
break
print('데이터를 불러왔습니다.')
def changeWord(self):
eng = input('수정할 영단어 입력 : ')
for data in wordList:
if eng == data.getEng():
kor = input(f'{eng} 뜻 입력 : ')
lev = input(f'{eng} 레벨 입력 : ')
index = wordList.index(data)
wordList[index] = Word(eng, kor, lev)
print('수정되었습니다.\n')
def delWord(self):
eng = input('삭제할 영단어 입력 : ')
index = -1
for data in wordList:
if eng == data.getEng():
index = wordList.index(data)
del wordList[index]
print('삭제되었습니다.\n')
if index ==-1:
print('삭제할 단어가 없습니다.\n')
class Menu:
def __init__(self):
self.service = WordService()
def run(self):
while True:
try:
menu = int(input('1.등록하기 2.출력하기 3.저장하기 4.불러오기 5.종료하기 6.변경 7.삭제: '))
if menu == 1:
self.service.insertWord()
elif menu == 2:
self.service.printAll()
elif menu == 3:
self.service.saveAll()
elif menu == 4:
self.service.loadData()
elif menu == 6:
self.service.changeWord()
elif menu == 7:
self.service.changeWord()
elif menu == 5:
print('프로그램을 종료합니다')
break
except Exception as e:
print(e)
print('다시 입력하세요!')
start = Menu()
start.run()
'Python > 개념' 카테고리의 다른 글
데이터베이스와 MongoDB 연결 (0) | 2024.06.03 |
---|---|
Day 11. 재귀호출 (0) | 2024.03.29 |
Day 10. 과제: 디렉토리 관련 프로그램 (0) | 2024.03.24 |
Day 10. 디렉토리 관리 프로그램 (0) | 2024.03.22 |
Day 9-2. 파일 입출력 라이브러리 (0) | 2024.03.21 |