파일 입출력을 이용해서 단어장을 만들어 보겠습니다.
다음 조건들을 만족시켜 영어 단어장을 만들어보도록 합시다!
아래 조건을 만족하는 영어 단어장을 만들어보자
단, 프로그램은 클래스로 설계하도록 함
제일 먼저 빈 리스트를 생성합니다.
Word 클래스를 만들어 set,get 메소드를 만들어 변수에 접근하기 용이하게 합니다. set 메소드를 통해 임의의 값을 변수에 지정할 수 있게 하고 get 메소드를 통해 변수의 값을 불러옵니다.
각 변수마다 set, get메소드를 만든 후 WordService 클래스를 만들어 사용자가 단어, 뜻, 레벌 등 값을 입력하게 만들어 1. 등록하기, 2. 출력하기, 3. 저장하기, 4. 불러오기, 5. 종료하기에 알맞게 메소드를 만들어줍니다.
마지막으로 사용자가 1. 등록하기, 2. 출력하기, 3. 저장하기, 4. 불러오기, 5. 종료하기 중 하나의 숫자를 입력하게 하여 원하는 메뉴를 실행하게 합니다. 이때 무한 루프를 만들어 프로그램이 종료할 때까지 계속 실행되도록 만들어줍니다.
위의 알고리즘대로 코드를 작성해보겠습니다.
insertWord() 메소드를 만들어 input()을 통해 단어, 뜻, 레벨을 입력받습니다. word 객체를 만들고 wordList에 입력값을 추가합니다. 1. 등록하기의 메소드가 잘 만들어졌습니다.
printAll() 메소드를 만들어 2. 출력하기의 메소드를 생성해보겠습니다. for문을 통해 리스트의 요소들을 사용하도록 만들어줍니다. data 변수로 getEng(), getKor(), getLev()를 통해 값을 출력합니다.
saveAll() 메소드는 3. 저장하기의 역할을 합니다. 학습했던 파일의 입력이 이 부분입니다. with문을 통해 자동으로 close메소드를 실행하게 합니다. 역시나 for 문을 통해 wordList에 내포되어 있는 값들을 모두 저장할 수 있습니다.
loadData() 메소드는 4. 불러오기의 역할을 합니다. 파일의 쓰기가 불러오기라고 할 수 있습니다. with문과 while문을 이용합니다. readline()을 통해 한 줄씩 불러옵니다. 내용이 있다면 strip()을 통해 공백등을 제거해주고 split(',')을 통해 콤마(comma)로 구분지어 wordList에 추가합니다. 각 행마다 반복하다 내용이 없을 때 무한 루프를 깨고 나옵니다.
Menu 클래스 생성하여 run()메소드를 만들어줍니다. run()메소드를 만들어 1. 등록하기, 2. 출력하기, 3. 저장하기, 4. 불러오기, 5. 종료하기가 입력된 값에 따라 실해되도록 설정합니다.
위의 코드는 수업 때 익힌 코드다. 위의 코드처럼 정교하고 깔끔하게 코드를 짜기까지는 꽤 오랜 시간이 걸린 것 같다. 처음에 여러 클래스를 만들어 각 클래스마다 메소드가 있고 객체도 다양하여 매우 헷갈렸던 것 같아 어거지로 코드를 짰었다. 가장 힘들었던 점은 변수를 남발하여 사용하여 에러를 자주 만들었다. 코드 작성할 때 이 부분은 항상 유념해야 할 것 같다. 조금 더 숙련된다면 조금 더 크게 보고 깔끔하게 짤 수 있을 것 같다.
Python 24. 파일 입출력 라이브러리 (0) | 2024.03.22 |
---|---|
Python 22. 변수 타입 어노테이션 (0) | 2024.03.22 |
Python 20. 파일 입출력 (0) | 2024.03.22 |
Python 18. 예외 처리 (0) | 2024.03.21 |
Python 17. Special method (0) | 2024.03.20 |