goodthings4me.tistory.com
네이버 지식인에 올라온 질문 내용이 있어서 답을 주고, 내친김에 전체 코드를 간단하게 짜 보았다. 나중에 db와 연결하고 UI를 넣어서 완성하면 미니 도서 관리 프로그램이 될 것 같다.
파이썬으로 짠 도서 목록 관리 프로그램
[파이썬 소스 코드]
books = [{'book_no':1, 'title':'친절한 한국사', 'author':'심용환', 'readingTime':'', 'status':'0'},
{'book_no':2, 'title':'만들면서 배우는 파이썬과 40개의 작품들', 'author':'장문철', 'readingTime':'2022.05.07', 'status':'1'},
{'book_no':3, 'title':'혼자 공부하는 파이썬', 'author':'윤인성', 'readingTime':'2021.12.31', 'status':'1'},
]
while True :
print(f'\n{"#"*5} 독서 목록 관리 프로그램 {"#"*5}\n')
print('1. 전체 조회')
print('2. 도서 검색')
print('3. 도서 추가')
print('4. 도서 삭제')
print('5. 프로그램 종료')
menu_num = input('\n메뉴 선택 : ')
if menu_num == '1':
for i, book in enumerate(books, 1):
if book['status'] == '0':
status = '읽을 책'
else:
status = "읽은 책"
print(f"\n도서관리번호: {book['book_no']} {'-'*10}\n제목: {book['title']}\n저자: {book['author']}\n읽은 일자: {book['readingTime']}\n상태: {status}\n")
elif menu_num == '2':
while True:
search_title = input('\n검색할 도서명(검색 종료 "q") : ')
if search_title.lower() == 'q':
break
else:
s = 0
for book in books:
if search_title in book['title']:
s += 1
print(f"\n도서관리번호: {book['book_no']}\n제목: {book['title']}\n저자: {book['author']}\n읽은 일자: {book['readingTime']}\n상태: {book['status']}\n")
if not s:
print('검색 도서가 없습니다.\n')
elif menu_num == '3':
append_book = {}
book_number = input('도서관리번호: ')
book_title = input('책 이름: ')
book_author = input('책 저자: ')
reading_time = input('책 읽기 종료일: ')
status = input('상태 입력(읽을 책 "0" / 읽은 책 "1"): ')
append_book['book_no'] = book_number
append_book['title'] = book_title
append_book['author'] = book_author
append_book['readingTime'] = reading_time
append_book['status'] = status
books.append(append_book)
elif menu_num == '4':
search_book_title = input('\n삭제할 책 이름 : ')
for book in books:
if search_book_title in book['title']:
print(f"\n도서관리번호: {book['book_no']} / 제목: {book['title']} / 저자: {book['author']}\n")
select_book = input("\n삭제할 '책 관리번호' ? : ")
for i, book in enumerate(books):
if int(select_book) == book['book_no']:
del books[i]
print(f'{books[i]} 삭제 완료!!')
# print(books)
elif menu_num == '5':
print('\n프로그램을 종료합니다.\n')
break
elif menu_num not in ('1', '2', '3', '4', '5'):
print('\n잘 못 입력하셨습니다.\n다시 입력하세요!!')
- 상태 "0"과 "1"은 도서를 읽었는지, 아니면 읽을 책인지 구분하기 위해 넣은 상태 값이다.
- 도서관리번호는 자동으로 숫자를 넣도록 만들 수 있는데, 여기서는 나중에 db table에 자동 증가를 할 것이기에 생략.
- 도서 추가 시에도 잘 못 입력된 것을 확인하고 수정하도록 넣으면 온전한 CRUD가 될 것임.
[실행 결과]
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 1
도서관리번호: 1 ----------
제목: 친절한 한국사
저자: 심용환
읽은 일자:
상태: 읽을 책
도서관리번호: 2 ----------
제목: 만들면서 배우는 파이썬과 40개의 작품들
저자: 장문철
읽은 일자: 2022.05.07
상태: 읽은 책
도서관리번호: 3 ----------
제목: 혼자 공부하는 파이썬
저자: 윤인성
읽은 일자: 2021.12.31
상태: 읽은 책
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 2
검색할 도서명(검색 종료 "q") : 파이썬
도서관리번호: 2
제목: 만들면서 배우는 파이썬과 40개의 작품들
저자: 장문철
읽은 일자: 2022.05.07
상태: 1
도서관리번호: 3
제목: 혼자 공부하는 파이썬
저자: 윤인성
읽은 일자: 2021.12.31
상태: 1
검색할 도서명(검색 종료 "q") : ㅂ
검색 도서가 없습니다.
검색할 도서명(검색 종료 "q") : q
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 3
도서관리번호: 4
책 이름: 여덟 건의 완벽한 살인
책 저자: 피터 스완슨 저/노진선 역
책 읽기 종료일:
상태 입력(읽을 책 "0" / 읽은 책 "1"): 0
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 1
도서관리번호: 1 ----------
제목: 친절한 한국사
저자: 심용환
읽은 일자:
상태: 읽을 책
도서관리번호: 2 ----------
제목: 만들면서 배우는 파이썬과 40개의 작품들
저자: 장문철
읽은 일자: 2022.05.07
상태: 읽은 책
도서관리번호: 3 ----------
제목: 혼자 공부하는 파이썬
저자: 윤인성
읽은 일자: 2021.12.31
상태: 읽은 책
도서관리번호: 4 ----------
제목: 여덟 건의 완벽한 살인
저자: 피터 스완슨 저/노진선 역
읽은 일자:
상태: 읽을 책
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 4
삭제할 책 이름 : 만들면서
도서관리번호: 2 / 제목: 만들면서 배우는 파이썬과 40개의 작품
들 / 저자: 장문철
삭제할 '책 관리번호' ? : 2
{'book_no': 3, 'title': '혼자 공부하는 파이썬', 'author': '
윤인성', 'readingTime': '2021.12.31', 'status': '1'} 삭제 완
료!!
##### 독서 목록 관리 프로그램 #####
1. 전체 조회
2. 도서 검색
3. 도서 추가
4. 도서 삭제
5. 프로그램 종료
메뉴 선택 : 5
프로그램을 종료합니다.
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
암스트롱 수, 거꾸로 정수 등 [파이썬 기초 예제] (0) | 2022.06.21 |
---|---|
입력한 수만큼 소수 추출하기 [파이썬 기초 예제] (0) | 2022.06.14 |
파이썬 문자열 자음 모음 아스키 코드로 구분하기 [파이썬 기초 예제] (0) | 2022.06.11 |
파이썬 파일 읽고 계산하기 [파이썬 기초 예제] (0) | 2022.06.10 |
리스트와 리스트 컴프리헨션 연습 [파이썬 기초 예제] (0) | 2022.06.10 |
댓글