본문 바로가기
코딩/파이썬

파일 입출력을 이용한 단어장 만들기

by Song1234 2024. 3. 21.

문제

아래 조건을 만족하는 영어 단어장을 만들어보자

  • 1.등록하기, 2.출력하기, 3.저장하기, 4.불러오기, 5.종료하기
  • 1을 선택했을 경우
    • 단어를 입력하세요: apple
    • 뜻을 입력하세요: 사과
    • 레벨을 입력하세요: 1
    • 등록되었습니다.
  • 2를 선택했을 경우
    • apple : 사과 (레벨 1)
  • 3을 선택했을 경우
    • 저장되었습니다. (파일에 저장, words.txt)
  • 4를 선택했을 경우
    • 불러왔습니다. (파일에서 읽어옴, words.txt)
  • 5를 선택했을 경우
    • 프로그램을 종료합니다.
  • 1~5까지의 숫자가 아닌 경우
    • 다시 입력하세요!

단, 프로그램은 클래스로 설계하도록 함

wordList = []
filename = 'words2.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):
    # apple : 사과 (레벨 1)
    for data in wordList:
        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:
        line = f.readline()
        while True:
            if line :
                data = line.strip().split(',')
                wordList.append(Word(data[0],data[1],datap[2]))
            else:
                break
    print('데이터를 불러 왔습니다')

class Menu:
def init(self):
self.service = WordService()

def run(self):
    while True:
        # try:
        menu = int(input('1.등록하기, 2.출력하기, 3.저장하기, 4.불러오기, 5.종료하기'))
        if menu == 1:
            self.service.insertWord()
        elif menu == 2:
            self.service.printAll()
        elif menu == 3:
            self.service.saveAll()
        elif menu == 5:
            print('프로그램을 종료합니다.')
            break
        # except Exception as e:
        #     print(e)
        #     print('다시 입력하세요')

start = Menu()
start.run()
```

'코딩 > 파이썬' 카테고리의 다른 글

디렉토리 관리 프로그램  (1) 2024.03.22
변수 타입 어노테이션  (1) 2024.03.21
파이썬 파일입출력  (0) 2024.03.20
파이썬 모듈  (0) 2024.03.20
파이썬 예외처리  (1) 2024.03.20