문제
아래 조건을 만족하는 영어 단어장을 만들어 보자.
1.등록하기 2.출력하기 3.저장하기 4.불러오기 5.종료하기
1을 선택했을 경우,단어를 입력하세요: ex)apple
뜻을 입력하세요: ex)사과
레벨을 입력하세요: ex)1
등록되었습니다.
2를 선택했을 경우,apple : 사과 (레벨1) ...
3을 선택했을 경우,
저장되었습니다. (파일에 저장, words.txt)
4를 선택했을 경우,불러왔습니다 - 라는 메세지가 뜨면서 (파일에서 읽어옴, words.txt)읽어오면서 메모리에 등록 (그래서 2번이 가능해짐)
5를 선택했을 경우,프로그램을 종료합니다.
1~5의 숫자가 아닌경우,다시 입력하세요. 출력
단, 프로그램은 클래스로 설계하도록 함
추가기능
'수정하기' 기능 추가
수정할 단어를 선택하세요:apple
없을경우 >>선택한 단어가 없습니다.
apple의 뜻을 입력하세요: 사과
apple의 레벨을 입력하세요: 1
수정되었습니다.
'삭제하기' 기능 추가
삭제할 단어를 선택하세요: apple
없을경우 >>선택한 단어가 없습니다.
삭제되었습니다.
'블러오기' 기능 변경
메뉴 4번을 삭제
프로그램 시작시 기존에 단어장 파일이 존재하는지 확인
있으면 그 파일에 있는 데이터를 메모리에 불러옵니다.
없으면 스킵
class Words:
words = {}
modified = False
def loadMemo(self):
self.words.clear()
try:
with open('words.txt', 'r') as f:
lines = f.readlines()
for line in lines:
word, mean = line.strip().split(' : ')
self.words[word] = mean
print(f'{len(self.words)}개 단어를 불러왔습니다')
except FileNotFoundError:
return
def saveMemo(self):
if len(self.words) > 0 and self.modified:
with open('words.txt', 'w') as f:
for word, mean in self.words.items():
f.write(f'{word} : {mean}\n')
print(f'{len(self.words)}개 단어를 저장했습니다')
self.modified = False
def printWords(self):
for word, mean in self.words.items():
print(f'{word}: {mean}')
def addWord(self):
word = input(' 단어를 입력하세요: ')
mean = input(' 의미를 입력하세요: ')
level = input(' 레벨을 입력하세요: ')
self.words[word] = f'{mean} (레벨{level})'
self.modified = True
print('등록되었습니다')
def modifyWord(self):
word = input(' 단어를 입력하세요: ')
if word in self.words:
mean = self.words.get(word)
print(f' {word}: {mean}')
select = input(' 메뉴를 선택하세요 (1.수정 2.삭제 3.취소): ')
if (select == '1'):
mean = input(f' {word}의 의미를 입력하세요: ')
level = input(f' {word}의 레벨을 입력하세요: ')
self.words[word] = f'{mean} (레벨{level})'
self.modified = True
print('수정되었습니다')
elif (select == '2'):
del self.words[word]
self.modified = True
print('삭제했습니다')
else:
print(f' {word}를 찾을 수 없습니다')
words = Words()
words.loadMemo()
words.printWords()
while True:
try:
menu = input('메뉴를 선택하세요 (1.등록 2.출력 3.수정 4.저장 5.종료): ')
except:
break
if menu == '1':
words.addWord()
elif menu == '2':
words.printWords()
elif menu == '3':
words.modifyWord()
elif menu == '4':
words.saveMemo()
elif menu == '5':
words.saveMemo()
print('프로그램 종료')
break
else:
print('다시 입력하세요')
으휴.. 아직 멀었다 멀었어..
꼴랑 이런 거 만드는 데도 몇 시간이 걸리는거야 대체
메모장이 여러 개일 경우를 생각해서 만들었는데
코드가 너무 꼬여서 이대로 가다간 탈모 올 것 같아
원래 과제대로 가기로 했다.
하지만 항상 그렇듯,
결과는 대부분 구린게 당연하고
일단 완성했다는 것에 의의를 두자.
첨에 생각했던 건 나중에 다시 구현해 보는 걸로 ㅠ.ㅠ
'■ 공부 > Python' 카테고리의 다른 글
[python] 사진파일 분류 프로그램(메타데이터 추출) (1) | 2024.03.24 |
---|---|
DAY 9. 디렉토리 관리 프로그램 (2) | 2024.03.22 |
DAY 8-1. 파일 입출력 라이브러리 (0) | 2024.03.21 |
DAY 9. 변수 타입 어노테이션 (0) | 2024.03.21 |
DAY 8-2. 파일 입출력 (0) | 2024.03.20 |