目录Contents 第1章Python程序设计快速入门1 1.1安装Python软件和运行Python程序1 1.1.1Python语言的特点1 1.1.2Python软件的下载和安装2 1.1.3命令行方式运行代码4 1.1.4文件方式运行代码5 1.2安装Anaconda软件和运行Python程序6 1.2.1安装Anaconda软件7 1.2.2Jupyter Notebook运行Python程序8 1.2.3Spyder运行Python程序10 1.3Python关键要素11 1.3.1一个简单的计算器程序11 1.3.2数据类型12 1.3.3对象和引用14 1.3.4逻辑操作17 1.3.5if选择语句18 1.3.6while循环语句22 1.3.7for…in循环语句23 1.3.8算术运算23 1.3.9输入输出28 1.4库的导入与扩展库的安装29 1.4.1库的导入29 1.4.2扩展库的安装30 1.5Python在线帮助31 1.5.1Python交互式帮助系统31 1.5.2Python文档33 1.6实战: 积跬步以致千里34 1.7习题35◆Python语言程序设计(第3版·微课版)目录第2章字符串和列表36 2.1字符串基础36 2.1.1创建字符串36 2.1.2字符编码37 2.1.3转义字符38 2.2字符串运算39 2.2.1处理字符串的函数39 2.2.2下标运算符[]40 2.2.3切片运算符[start:end:step]41 2.2.4连接运算符+和复制运算符42 2.2.5in和not in成员运算符42 2.2.6格式化字符串运算符%42 2.3字符串对象的常用方法43 2.3.1去除字符串首尾的空白符及指定字符44 2.3.2字符串的大小写处理44 2.3.3搜索与替换字符串45 2.3.4连接与分割字符串46 2.3.5字符串映射47 2.3.6检查字符串特征47 2.3.7字符串对齐及填充48 2.3.8字符串格式化输出49 2.4字符串常量52 2.5实战: 恺撒加密和解密52 2.6实战: MD5加密54 2.7列表54 2.7.1创建列表54 2.7.2修改列表元素55 2.7.3往列表中添加元素55 2.7.4删除列表中的元素56 2.7.5列表切片57 2.8序列类型的常用操作58 2.9统计和排序列表中的元素59 2.10列表推导式61 2.11用于列表的一些常用函数62 2.12基于turtle库绘图和绘制文本64 2.12.1画布64 2.12.2Turtle空间坐标体系66 2.12.3画笔66 2.12.4绘图命令67 2.12.5用turtle绘制文本69 2.13实战: 绘制落英缤纷的樱花树70 2.14习题72 第3章元组、字典和集合74 3.1元组74 3.1.1创建元组74 3.1.2修改元组75 3.1.3生成器推导式76 3.2字典77 3.2.1创建字典77 3.2.2访问字典78 3.2.3添加与修改字典元素79 3.2.4删除字典元素81 3.2.5复制字典81 3.2.6字典推导式82 3.3字典实战: 使用jieba库统计《蒹葭》的词频82 3.4集合数据类型83 3.4.1创建集合83 3.4.2集合添加元素84 3.4.3集合元素删除84 3.4.4集合运算85 3.4.5集合推导式86 3.5集合实战: 统计公司的各类人才都有谁?86 3.6序列解包87 3.7日期格式和字符串格式相互转化89 3.7.1字符串格式转化为日期格式89 3.7.2日期格式转化为字符串格式90 3.8循环中的break、continue、pass和else90 3.8.1用break语句提前终止循环90 3.8.2用continue语句提前结束本次循环91 3.8.3pass子句92 3.8.4循环语句的else 子句92 3.9实战: 简易购物94 3.10习题95 第4章函数97 4.1定义函数97 4.2函数调用99 4.2.1带有返回值的函数调用99 4.2.2不带返回值的函数调用102 4.3向函数传递实参102 4.3.1位置实参传递102 4.3.2关键字实参传递103 4.3.3默认值实参传递103 4.3.4可变长实参传递104 4.3.5序列解包实参传递105 4.4通过传引用来传递实参106 4.5生成器函数106 4.6lambda表达式定义匿名函数109 4.6.1lambda表达式定义的匿名函数和def函数的区别109 4.6.2自由变量对lambda表达式的影响111 4.7变量的作用域112 4.7.1全局变量112 4.7.2局部变量113 4.8函数的递归调用114 4.9常用内置函数117 4.9.1map()映射函数117 4.9.2reduce()函数118 4.9.3filter()过滤函数119 4.10pyinstaller打包生成可执行文件120 4.11实战: 哥德巴赫猜想121 4.12习题122 第5章正则表达式124 5.1正则表达式的构成124 5.1.1预定义字符124 5.1.2元字符125 5.2正则表达式的分组匹配128 5.2.1无名分组匹配129 5.2.2命名分组匹配129 5.2.3分组后向引用匹配130 5.3正则表达式的选择匹配131 5.4正则表达式的贪婪匹配与懒惰匹配131 5.4.1贪婪匹配131 5.4.2懒惰匹配132 5.5正则表达式模块re133 5.5.1search()与match()函数匹配字符串133 5.5.2findall()与finditer()函数获取所有匹配子串136 5.5.3sub()函数搜索与替换137 5.5.4compile()函数编译正则表达式138 5.5.5split()函数分隔字符串139 5.6正则表达式中的(?:pattern)、(?=pattern)、(?!pattern)、(?<=pattern) 和(?<!pattern)140 5.7实战: 提取HTML文件中的歌手和歌名142 5.8习题143 第6章文件与文件夹操作145 6.1文件的概念145 6.1.1文件的分类145 6.1.2字符编码与解码146 6.2文件读写148 6.2.1文件的读取148 6.2.2文件的写入151 6.2.3文件指针的定位153 6.2.4Python数据类型与字节数据类型的转换154 6.3文件与文件夹操作156 6.3.1使用os操作文件与文件夹156 6.3.2使用os.path操作文件与文件夹159 6.3.3使用shutil操作文件与文件夹162 6.4CSV文件的读取和写入(使用原文件)164 6.4.1使用csv.reader()读取CSV文件164 6.4.2使用csv.writer()写入CSV文件165 6.4.3使用csv.DictReader()读取CSV文件166 6.4.4使用csv.DictWriter()写入CSV文件168 6.4.5CSV文件的格式化参数169 6.4.6自定义dialect170 6.5实战: 递归遍历文件夹获取指定后缀的文件名列表171 6.6习题172 第7章面向对象程序设计174 7.1编程范式174 7.1.1面向过程编程174 7.1.2面向对象编程175 7.1.3函数式编程175 7.2创建和使用类177 7.2.1定义类177 7.2.2创建类的对象178 7.3类中的属性178 7.3.1对象属性和类属性178 7.3.2公有属性和私有属性180 7.3.3特殊属性181 7.4类中的方法182 7.4.1对象方法182 7.4.2类方法184 7.4.3静态方法185 7.4.4属性装饰器186 7.5类的继承189 7.5.1类的单继承和多继承189 7.5.2子类的方法__init__()191 7.5.3查看继承的层次关系194 7.6object类195 7.6.1内置属性195 7.6.2内置函数196 7.7对象的浅复制和深复制197 7.7.1对象的浅复制197 7.7.2对象的深复制198 7.8实战: 自定义分类感知器199 7.8.1感知器模型199 7.8.2感知器学习算法200 7.8.3Python实现感知器学习算法202 7.8.4使用感知器分类鸢尾花数据203 7.9实战: 自定义数据结构205 7.9.1自定义栈数据结构205 7.9.2自定义队列数据结构207 7.10习题210 第8章模块和包211 8.1模块211 8.1.1模块的创建211 8.1.2模块的导入和使用212 8.1.3模块的主要属性213 8.2导入模块时搜索目录的顺序与系统目录的添加215 8.2.1导入模块时搜索目录的顺序215 8.2.2使用sys.path.append()临时增添系统目录216 8.2.3使用pth文件永久添加系统目录216 8.2.4使用PYTHONPATH环境变量永久添加系统目录216 8.3包217 8.3.1包的创建217 8.3.2包的导入与使用218 8.4实战: 自定义二叉树数据结构219 8.5习题223 第9章错误和异常处理224 9.1程序的错误224 9.1.1常犯的9个错误224 9.1.2常见的错误类型227 9.2异常处理229 9.2.1异常概述229 9.2.2异常类型230 9.2.3异常处理230 9.2.4主动抛出异常235 9.2.5自定义异常类236 9.3断言处理238 9.3.1断言处理概述238 9.3.2启用/禁用断言239 9.3.3断言使用场景240 9.4实战: 自定义图数据结构241 9.5习题245 第10章Tkinter图形用户界面设计247 10.1Tkinter图形用户界面库247 10.1.1Tkinter的组件247 10.1.2Tkinter编程基本步骤248 10.2Tkinter布局管理器250 10.2.1pack布局管理器250 10.2.2grid布局管理器251 10.2.3place布局管理器253 10.3主窗口254 10.4标签和按钮256 10.4.1标签256 10.4.2按钮260 10.5文本框262 10.5.1单行文本框262 10.5.2多行文本框263 10.6消息和对话框267 10.6.1消息267 10.6.2消息对话框268 10.6.3文件对话框270 10.7选择组件272 10.7.1单选按钮272 10.7.2复选框274 10.7.3列表框276 10.8菜单与框架278 10.8.1菜单组件278 10.8.2框架组件280 10.9tkinter的子模块ttk281 10.10习题283 第11章数据可视化284 11.1matplotlib绘图流程284 11.1.1创建画布284 11.1.2创建绘图区285 11.1.3绘制图表289 11.2绘图属性设置289 11.2.1颜色、标记和线型289 11.2.2刻度、标题和标签290 11.2.3网格、文本和注释292 11.2.4图例和保存293 11.3绘制线形图和散点图295 11.3.1线形图概述295 11.3.2绘制线形图的步骤296 11.3.3支持中文字体的方式298 11.3.4绘制散点图301 11.4绘制直方图和条形图303 11.4.1绘制直方图303 11.4.2绘制柱状图306 11.5绘制饼图、极坐标图和雷达图309 11.5.1绘制饼图309 11.5.2绘制极坐标图310 11.5.3绘制雷达图311 11.6绘制3D效果图312 11.6.1绘制三维曲线图313 11.6.2绘制三维散点图313 11.6.3绘制三维柱状图314 11.7绘制动画图315 11.8图像载入与展示318 11.8.1plt.imshow()展示图318 11.8.2plt.imread()载入图320 11.9习题321 第12章数据库编程322 12.1关系数据库322 12.1.1关系数据库概述322 12.1.2关系数据库访问322 12.2结构化查询语言SQL323 12.2.1建立和删除数据表323 12.2.2查询语句324 12.2.3添加、更新和删除语句324 12.3SQLite3数据库325 12.3.1创建与SQLite3数据库的连接325 12.3.2在SQLite数据库中创建和删除表327 12.3.3向表中插入数据328 12.3.4查询、修改和删除表中数据329 12.4Navicat 操作MySQL数据库330 12.4.1Navicat概述330 12.4.2Navicat 连接MySQL数据库330 12.4.3Navicat创建MySQL数据库331 12.4.4如何使用 Navicat 创建表331 12.5Python操作MySQL数据库333 12.5.1连接数据库333 12.5.2创建游标对象334 12.5.3创建数据库335 12.5.4创建数据表335 12.5.5插入数据337 12.5.6查询数据338 12.5.7更新和删除数据338 12.6习题339 参考文献340