Python 实现一个类,表示一个简单的电子书
class eBook:
def __init__(self, title, author):
self.title = title # 电子书标题
self.author = author # 作者名称
self.pages = [] # 存储每页内容的列表
self.current_page = 0# 当前页码从0开始
def add_page(self, content):
self.pages.append(content) # 向书本添加新页面
def next_page(self):
if self.current_page < len(self.pages) - 1:
self.current_page += 1 # 翻到下一页
return True
return False # 已到末尾无法继续
def prev_page(self):
if self.current_page > 0:
self.current_page -= 1 # 翻到上一页
return True
return False # 已到开头无法继续
def show_page(self):
if 0 <= self.current_page < len(self.pages):
return self.pages[self.current_page] # 返回当前页内容
return "无效页码" # 页码超出范围时返回提示
def set_bookmark(self, page_number):
if 0 <= page_number < len(self.pages):
self.bookmarks = getattr(self, 'bookmarks', [])
self.bookmarks.append(page_number) # 添加书签
return True
return False
def search_content(self, keyword):
result = [i for i, text in enumerate(self.pages) if keyword in text]
return result # 返回所有包含关键词的页码
快速解决
直接使用 Python 类封装电子书基础功能,通过 eBook 类实现内容存储、翻页、书签和搜索功能,可快速构建电子书管理模块。
常用方法
| 方法名 | 功能描述 | 使用频率 | 参数要求 | 返回值类型 |
|---|---|---|---|---|
__init__ |
初始化电子书对象 | ★★★★★ | 标题/作者 | eBook实例 |
add_page |
添加内容页 | ★★★★★ | 文本内容 | None |
next_page |
翻到下一页 | ★★★★ | 无 | 布尔值 |
show_page |
显示当前页内容 | ★★★★★ | 无 | 字符串/提示 |
set_bookmark |
添加书签 | ★★★☆ | 页码 | 布尔值 |
search_content |
内容搜索 | ★★★★ | 搜索词 | 页码列表 |
详细说明
初始化与基础设置
book = eBook("Python入门", "张三")
book.add_page("第一章:Python简介")
book.add_page("第二章:安装与配置")
book.add_page("第三章:基础语法")
翻页逻辑实现
def next_page(self):
if self.current_page < len(self.pages) - 1:
self.current_page += 1
return True
return False
def prev_page(self):
if self.current_page > 0:
self.current_page -= 1
return True
return False
书签管理功能
def set_bookmark(self, page_number):
if 0 <= page_number < len(self.pages):
self.bookmarks = getattr(self, 'bookmarks', [])
# 如果不存在bookmarks属性则新建列表
self.bookmarks.append(page_number)
return True
return False
内容搜索实现
def search_content(self, keyword):
result = [i for i, text in enumerate(self.pages)
if keyword in text]
return result
高级技巧
1. 内容分页处理
def auto_paginate(self, full_text, max_chars=500):
# 自动将长文本按字符数分页
self.pages = [full_text[i:i+max_chars]
for i in range(0, len(full_text), max_chars)]
使用场景:当用户输入大段文本时自动分页,避免手动分割内容
2. 书签去重优化
def set_bookmark(self, page_number):
if 0 <= page_number < len(self.pages):
self.bookmarks = getattr(self, 'bookmarks', [])
if page_number not in self.bookmarks:
self.bookmarks.append(page_number)
return True
return False
优化点:添加页码前检查是否已存在,防止重复书签
常见问题
Q1:如何处理电子书内容的分页逻辑?
A:通过 auto_paginate 方法自动分割文本,或手动使用 add_page 添加每页内容。推荐先添加完整内容再自动分页。
Q2:书签功能无法保存多个?
A:确保每次调用 set_bookmark 时都使用不同的页码。代码已内置去重检查,重复页码会自动忽略。
Q3:搜索功能区分大小写吗?
A:默认区分大小写,可通过修改搜索逻辑为 keyword.lower() in text.lower() 实现大小写无关搜索。
Q4:翻页时如何处理异常页码?
A:show_page 方法已包含边界检查,超出范围时返回"无效页码"提示,无需额外处理。
实战应用
python_book = eBook("Python编程指南", "李四")
python_book.add_page("欢迎阅读Python编程指南")
python_book.add_page("本指南包含基础知识与实战案例")
python_book.add_page("您可以通过目录快速定位章节")
python_book.set_bookmark(1)
python_book.set_bookmark(2)
print(python_book.show_page()) # 输出第一页内容
python_book.next_page()
print(python_book.show_page()) # 输出第二页内容
python_book.next_page()
print(python_book.show_page()) # 输出第三页内容
python_book.next_page() # 返回False,已到末尾
print(python_book.search_content("案例")) # 返回[1]
扩展功能建议
- 目录生成:添加
generate_toc方法,自动从页内容提取章节标题 - 进度保存:增加
save_progress方法将阅读位置写入文件 - 格式支持:扩展
add_page方法支持 Markdown 格式解析 - 版本控制:添加
revisions属性记录内容修改历史
总结
通过定义 eBook 类实现基础电子书功能,提供可扩展的面向对象解决方案,满足内容管理、导航和搜索等核心需求。