Python
22. (예제) 영어 단어장 만들기
muru_
2024. 3. 21. 17:34
영어 단어장 만들기
[조건]
- 1.등록하기, 2.출력하기, 3.저장하기, 4.불러오기, 5.종료하기
- 1을 선택했을 경우
- 단어를 입력하세요 : apple
- 뜻을 입력하세요 : 사과
- 레벨을 입력하세요 : 1
- 등록되었습니다.
- 2를 선택했을 경우
- apple : 사과 (레벨 1)
- 3을 선택했을 경우
- 저장되었습니다. (파일에 저장, words.txt)
- 4를 선택했을 경우
- 불러왔습니다. (파일에서 읽어옴, words.txt)
- 5를 선택했을 경우
- 프로그램을 종료합니다.
- 1~5외의 숫자를 선택한 경우
- 다시 입력하세요!
- 단, 프로그램은 클래스로 설계
# 1.단어 저장 클래스
class Word:
def __init__(self, eng, kor, lev):
self.eng = eng
self.kor = kor
self.lev = lev
def setEng(self, eng):
self.eng = eng
def setKor(self, kor):
self.kor = kor
def setLev(self, lev):
self.lev =lev
def getEng(self):
return self.eng
def getKor(self):
return self.kor
def getLev(self):
return self.lev
# 2.기능 클래스
class func:
def __init__(self):
self.wordList = []
# 2-1) 단어 입력
def insertWord(self):
eng = input('단어 : ')
kor = input('뜻 : ')
lev = input('레벨 : ')
word = Word(eng, kor, lev)
self.wordList.append(word)
# [Word('apple', '사과', 1), Word('banana', '바나나', 2), Word('orange', '오렌지', 3)]
print('등록되었습니다.\n')
# 2-2) 단어 출력
def printWord(self):
for i in self.wordList:
print(f'{i.getEng()} : {i.getKor()} (레벨 {i.getLev()})')
# Word('apple', '사과', 1).getEng
print()
# 2-3) 단어장으로 저장 (word.txt)
def saveWord(self):
with open('words.txt', 'a') as f:
for i in self.wordList:
f.write(f'{i.getEng()}, {i.getKor()}, {i.getLev()}\n')
print('저장했습니다.\n')
# 2-4) 단어장 불러오기
def loadWord(self):
with open('words.txt', 'r') as f:
while True:
line = f.readline() # 한줄씩 읽어오기
if line: # 데이터가 존재한다면 한줄 읽기
data = line.strip().split(',') # 공백 날리고 쉼표 기준으로 나누기
self.wordList.append(Word(data[0], data[1], data[2]))
else:
break
print('데이터를 불러왔습니다.')
# 3.실행 클래스
class Menu:
def __init__(self):
self.service = func()
def run(self):
while True:
try:
num = int(input('1.입력, 2.출력, 3.저장, 4.호출, 5.종료 -> '))
except Exception as e:
print(e)
print('1~5 숫자를 입력해주세요.\n')
continue
if num == 1:
self.service.insertWord()
elif num == 2:
self.service.printWord()
elif num == 3:
self.service.saveWord()
elif num == 4:
self.service.loadWord()
elif num == 5:
print('종료하겠습니다.')
break
else:
print('1~5 숫자를 입력해주세요.\n')
test = Menu()
test.run()