“我做到了”还记得我们第一次见面时的情景吗?那时,你面对杂乱的电子书文件夹束手无策,对 Python 的认识可能还停留在“一条大蟒蛇”……
而现在,你亲手打造了一个功能齐全的图书管理系统!它能够:
这就像看着自己的孩子从蹒跚学步到奔跑如飞——老父亲/老母亲的泪水都要流下来了!
但是,就像任何好故事一样,结局往往意味着新的开始。今天,让我们为这个项目画上一个完美的句号,同时打开通往更广阔世界的大门!
项目完善与扩展思考
1. 统计功能:给你的书库做一次“全面体检”
是时候了解一下我们的阅读“家底”了!让我们添加一些酷炫的统计功能:
defshow_statistics(library):"""显示书库统计信息"""ifnot library: print("书库是空的,暂无统计信息。")return total_books = len(library)# 作者统计 authors = {}for book in library: author = book['author'] authors[author] = authors.get(author, 0) + 1# 分类统计 genres = {}for book in library: genre = book['genre'] genres[genre] = genres.get(genre, 0) + 1# 评分统计 ratings = [book['rating'] for book in library] avg_rating = sum(ratings) / len(ratings) if ratings else0 best_book = max(library, key=lambda x: x['rating']) if library elseNone print("\n📊 书库统计报告") print("=" * 40) print(f"藏书总量:{total_books} 本") print(f"平均评分:{avg_rating:.1f} 分") print(f"\n👑 最爱作者TOP3:") sorted_authors = sorted(authors.items(), key=lambda x: x[1], reverse=True)[:3]for author, count in sorted_authors: print(f" {author}:{count} 本") print(f"\n📚 热门分类:")for genre, count in list(genres.items())[:5]: print(f" {genre}:{count} 本")if best_book: print(f"\n⭐ 评分之王:") print(f" 《{best_book['title']}》 - {best_book['rating']} 分")
运行这个功能,你会得到一份漂亮的阅读报告——原来我这么喜欢刘慈欣,原来科幻类藏书最多!
2. 排序功能:让书籍按你的心意排列
有时候,我们想看看评分最高的书,或者按书名排序:
defsort_books(library):"""排序显示书籍"""ifnot library: print("书库是空的。")return print("\n排序方式:") print("1. 按评分从高到低") print("2. 按书名A-Z") print("3. 按作者A-Z") choice = input("请选择排序方式 (1-3): ").strip()if choice == "1": sorted_library = sorted(library, key=lambda x: x['rating'], reverse=True) print("\n⭐ 评分排行榜:")elif choice == "2": sorted_library = sorted(library, key=lambda x: x['title']) print("\n📖 按书名排序:")elif choice == "3": sorted_library = sorted(library, key=lambda x: x['author']) print("\n✍️ 按作者排序:")else: print("无效选择!")return display_all_books(sorted_library)
3. 最终整合:你的第一个专业级软件
现在,让我们把所有这些功能整合到最终版主菜单中:
defmain():"""终极版主程序""" book_library = load_library() print(f"🎉 欢迎使用终极图书管理系统!") print(f" 当前书库有 {len(book_library)} 本书,继续探索知识的海洋吧!")whileTrue: print("\n" + "=" * 40) print(" 终极图书管理系统") print("=" * 40) print("1. 显示所有书籍") print("2. 添加新书") print("3. 搜索书籍") print("4. 删除书籍") print("5. 修改书籍") print("6. 书库统计") print("7. 排序显示") print("8. 退出系统") print("=" * 40) choice = get_user_choice()if choice == 1: display_all_books(book_library)elif choice == 2: add_book(book_library)elif choice == 3: search_books(book_library)elif choice == 4: delete_book(book_library)elif choice == 5: modify_book(book_library)elif choice == 6: show_statistics(book_library)elif choice == 7: sort_books(book_library)elif choice == 8: save_library(book_library) print("感谢使用,愿阅读永远陪伴你!📚✨")breakelse: print("无效选择,请输入1-8之间的数字!")
看!8 大功能,完整的管理系统——这就是你从零开始创造的奇迹!
你走过的路,比代码更珍贵
回顾这 9 章的学习旅程,你收获的不仅仅是一个图书管理系统:
🎯 你掌握了 Python 核心概念:
🚀 你培养了真正的编程思维:
最重要的是,你证明了“我能行”! 在无数人还在犹豫时,你已经用行动给出了最好的回答。
下一站:星辰大海
你的编程之旅才刚刚开始!这里有一些建议:
🛠️ 立即可以做的:
🌍 扩展学习方向:
Web 开发:用 Django 或 Flask 把系统做成网站
GUI 开发:用 Tkinter 或 PyQt 制作图形界面
结语
Python 入门系列的所有内容就到此结束了,下一篇文章将是全系列导航文章,欢迎继续关注!
愿你我保持好奇,保持勇敢,在代码的世界里继续探索,继续创造。
我们,在更高的山峰再见!👋
以下是完整版代码:
import json# === 数据层函数 ===defload_library():"""加载书库数据"""try:with open("my_library.json", "r", encoding="utf-8") as file:return json.load(file)except FileNotFoundError:return []defsave_library(library):"""保存书库数据"""with open("my_library.json", "w", encoding="utf-8") as file: json.dump(library, file, ensure_ascii=False, indent=4)# === 功能层函数 ===defdisplay_all_books(library):"""功能1:显示书库中的所有书籍"""ifnot library: print("书库是空的,快去添加几本书吧!")return print(f"\n当前共有 {len(library)} 本书:") print("=" * 40)for i, book in enumerate(library, 1): print(f"{i}. 《{book['title']}》") print(f" 作者:{book['author']}") print(f" 分类:{book['genre']}") print(f" 评分:{book['rating']}") print("-" * 20)defadd_book(library):"""功能2:添加新书""" print("\n--- 添加新书 ---") title = input("请输入书名: ").strip() author = input("请输入作者: ").strip() genre = input("请输入分类: ").strip()ifnot title ornot author: print("书名和作者不能为空!")returntry: rating = float(input("请输入评分 (0-5): "))ifnot0 <= rating <= 5: print("评分必须在0-5之间!")returnexcept ValueError: print("评分必须是数字!")return new_book = {"title": title,"author": author,"genre": genre,"rating": rating } library.append(new_book) save_library(library) print(f"✅ 《{title}》添加成功!")defsearch_books(library):"""功能3:搜索书籍""" keyword = input("请输入书名或作者关键词: ").strip()ifnot keyword: print("关键词不能为空!")return found_books = []for book in library:if (keyword in book['title'] or keyword in book['author'] or keyword in book['genre']): found_books.append(book)if found_books: print(f"\n找到 {len(found_books)} 本相关书籍:") display_all_books(found_books) # 复用显示函数!else: print("🔍 没有找到相关书籍。")defdelete_book(library):"""功能4:删除书籍(带安全确认)"""ifnot library: print("书库是空的,没什么可删除的。")return# 先显示所有书籍,让用户知道该删哪本 display_all_books(library)try: book_num = int(input("\n请输入要删除的书籍编号: "))if book_num < 1or book_num > len(library): print("无效的编号!")returnexcept ValueError: print("请输入有效的数字!")return# 找到要删除的书 target_book = library[book_num - 1]# 重要:二次确认! print(f"\n⚠️ 即将删除:《{target_book['title']}》") confirm = input("确定要删除吗?(输入 'yes' 确认): ").strip().lower()if confirm == 'yes': removed_book = library.pop(book_num - 1) save_library(library) # 立即保存 print(f"✅ 已删除《{removed_book['title']}》")else: print("❌ 取消删除操作")defmodify_book(library):"""功能5:修改书籍信息"""ifnot library: print("书库是空的。")return display_all_books(library)try: book_num = int(input("\n请输入要修改的书籍编号: "))if book_num < 1or book_num > len(library): print("无效的编号!")returnexcept ValueError: print("请输入有效的数字!")return target_book = library[book_num - 1] print(f"\n当前修改的是:《{target_book['title']}》")# 逐项修改,如果用户直接回车就保留原值 new_title = input(f"新书名 (当前: {target_book['title']}) [直接回车保持不变]: ").strip() new_author = input(f"新作者 (当前: {target_book['author']}) [直接回车保持不变]: ").strip() new_genre = input(f"新分类 (当前: {target_book['genre']}) [直接回车保持不变]: ").strip() new_rating = input(f"新评分 (当前: {target_book['rating']}) [直接回车保持不变]: ").strip()# 更新信息(只有用户输入了新内容才更新)if new_title: target_book['title'] = new_titleif new_author: target_book['author'] = new_authorif new_genre: target_book['genre'] = new_genreif new_rating:try: target_book['rating'] = float(new_rating)except ValueError: print("评分必须是数字,该项修改失败!") save_library(library) print("✅ 书籍信息更新成功!")defshow_statistics(library):"""功能6:显示书库统计信息"""ifnot library: print("书库是空的,暂无统计信息。")return total_books = len(library)# 作者统计 authors = {}for book in library: author = book['author'] authors[author] = authors.get(author, 0) + 1# 分类统计 genres = {}for book in library: genre = book['genre'] genres[genre] = genres.get(genre, 0) + 1# 评分统计 ratings = [book['rating'] for book in library] avg_rating = sum(ratings) / len(ratings) if ratings else0 best_book = max(library, key=lambda x: x['rating']) if library elseNone print("\n📊 书库统计报告") print("=" * 40) print(f"藏书总量:{total_books} 本") print(f"平均评分:{avg_rating:.1f} 分") print(f"\n👑 最爱作者TOP3:") sorted_authors = sorted( authors.items(), key=lambda x: x[1], reverse=True)[:3]for author, count in sorted_authors: print(f" {author}:{count} 本") print(f"\n📚 热门分类:")for genre, count in list(genres.items())[:5]: print(f" {genre}:{count} 本")if best_book: print(f"\n⭐ 评分之王:") print(f" 《{best_book['title']}》 - {best_book['rating']} 分")defsort_books(library):"""功能7:排序显示书籍"""ifnot library: print("书库是空的。")return print("\n排序方式:") print("1. 按评分从高到低") print("2. 按书名A-Z") print("3. 按作者A-Z") choice = input("请选择排序方式 (1-3): ").strip()if choice == "1": sorted_library = sorted( library, key=lambda x: x['rating'], reverse=True) print("\n⭐ 评分排行榜:")elif choice == "2": sorted_library = sorted(library, key=lambda x: x['title']) print("\n📖 按书名排序:")elif choice == "3": sorted_library = sorted(library, key=lambda x: x['author']) print("\n✍️ 按作者排序:")else: print("无效选择!")return display_all_books(sorted_library)# === 主程序 ===defget_user_choice():"""安全获取用户选择"""whileTrue:try: choice = int(input("请选择功能 (1-8): ").strip())return choiceexcept ValueError: print("请输入1-8之间的数字!")defget_book_number(library, prompt):"""安全获取书籍编号"""whileTrue:try: num = int(input(prompt).strip())if1 <= num <= len(library):return numelse: print(f"请输入1-{len(library)}之间的有效编号!")except ValueError: print("请输入有效的数字!")defmain():"""终极版主程序""" book_library = load_library() print(f"🎉 欢迎使用终极图书管理系统!") print(f" 当前书库有 {len(book_library)} 本书,继续探索知识的海洋吧!")whileTrue: print("\n" + "=" * 40) print(" 终极图书管理系统") print("=" * 40) print("1. 显示所有书籍") print("2. 添加新书") print("3. 搜索书籍") print("4. 删除书籍") print("5. 修改书籍") print("6. 书库统计") print("7. 排序显示") print("8. 退出系统") print("=" * 40) choice = get_user_choice()if choice == 1: display_all_books(book_library)elif choice == 2: add_book(book_library)elif choice == 3: search_books(book_library)elif choice == 4: delete_book(book_library)elif choice == 5: modify_book(book_library)elif choice == 6: show_statistics(book_library)elif choice == 7: sort_books(book_library)elif choice == 8: save_library(book_library) print("感谢使用,愿阅读永远陪伴你!📚✨")breakelse: print("无效选择,请输入1-8之间的数字!")# 程序入口if __name__ == "__main__": main()
免责声明:本教程所有内容均为编程学习目的,所提及书籍名称及作者均为示例。请尊重知识产权,支持正版电子书。