第1章绪论——计算机与程序设计1 1.1什么是计算机1 1.2如何存储程序4 1.2.1存储单位4 1.2.2存储方式4 1.2.3存取操作5 1.2.4存储器分类5 1.2.5文件与目录5 1.3软件与程序设计7 1.4典型Python程序演示9 1.5程序设计方法11 1.5.1结构化方法11 1.5.2面向对象方法11 1.6程序设计语言12 1.7Python语言简介14 1.8Python程序设计的基本环境15 小结20 你学到了什么21 基本功训练21 实验指导21 第2章数据类型与变量——程序设计入门22 2.1在屏幕上输出文字信息22 2.1.1Python程序的基本框架24 2.1.2注释25 2.1.3中文编码25 2.1.4模块导入25 2.1.5转义序列26 2.1.6标准输出函数print27 2.1.7关键字与保留字28 2.1.8分隔符与空白符28 2.1.9海龟写字29 2.2计算两个固定整数的和与积30 2.2.1数据类型32 2.2.2对象与变量32 2.2.3标识符34 2.2.4算术运算和算术表达式34 2.2.5赋值语句35 2.2.6格式化输出36 2.2.7程序设计的风格37 2.3计算任意两个整数的和与积38 2.3.1标准输入函数39 2.3.2类型转换39 2.3.3测试用例40 2.3.4程序的顺序结构41 2.3.5可执行脚本42 2.4温度转换42 2.4.1整除和int转换44 2.4.2运算的优先级和结合性45 2.4.3变量初始化46 2.5求3个数的平均值46 2.5.1浮点型数据47 2.5.2控制浮点型数据的精度49 2.5.3再谈数据类型的转换51 2.6计算圆的周长和面积52 2.7绘制几何图形53 小结57 你学到了什么57 程序练习题58 项目设计61 实验指导61 问题求解与Python程序设计目录第3章判断与决策——选择程序设计62 3.1让成绩合格的学生通过62 3.1.1关系运算与逻辑判断64 3.1.2逻辑常量与逻辑变量65 3.1.3单分支选择结构66 3.1.4特殊形式的判断条件68 3.1.5比较两个实数的大小69 3.2按成绩把学生分成两组71 3.2.1双分支选择结构73 3.2.2条件表达式74 3.3按成绩把学生分成多组(百分制)75 3.3.1嵌套的if结构79 3.3.2嵌套的ifelse结构80 3.3.3多分支选择结构82 3.4按成绩把学生分成多组(五级制)83 3.4.1字符串和字符86 3.4.2字符数据的输入与输出87 3.5判断闰年问题88 3.5.1逻辑运算89 3.5.2逻辑运算的优先级和短路性91 3.6判断点的位置93 小结94 你学到了什么95 程序练习题95 项目设计98 实验指导98 第4章重复与迭代——循环程序设计99 4.1打印规则图形99 4.2自然数求和102 4.2.1迭代与赋值103 4.2.2更多的赋值运算105 4.2.3for循环106 4.3简单的学生成绩统计109 4.3.1标记控制的while循环110 4.3.2程序的容错能力112 4.3.3调试与测试114 4.3.4输入输出重定向116 4.4计算2的算术平方根116 4.4.1误差精度控制的while循环119 4.4.2再谈格式化输出120 4.5打印九九乘法表121 4.5.1循环嵌套122 4.5.2穷举法124 4.6列出素数125 4.7随机游戏模拟128 4.7.1随机数130 4.7.2自顶向下、逐步求精133 4.7.3结构化程序设计134 小结135 你学到了什么136 程序练习题136 项目设计140 实验指导140 第5章分而治之——函数程序设计141 5.1再次讨论猜数游戏模拟问题142 5.1.1模块化思想144 5.1.2函数定义144 5.1.3函数调用148 5.1.4关键字参数152 5.1.5默认参数153 5.1.6lambda表达式153 5.1.7函数测试154 5.1.8函数模块化154 5.2是非判断问题求解157 5.2.1判断函数157 5.2.2变量的作用域159 5.2.3函数调用堆栈160 5.3问题的递归求解162 5.3.1问题的递归描述163 5.3.2递归函数164 5.3.3尾递归170 5.4绘制几何图形的接口171 5.4.1接口设计176 5.4.2接口实现177 5.4.3私有变量和私有函数177 5.4.4__name__属性178 5.4.5项目开发180 小结181 你学到了什么181 程序练习题182 项目设计185 实验指导186 第6章客观对象描述——面向对象程序设计基础187 6.1学生成绩统计187 6.1.1客观对象的抽象190 6.1.2定义对象类191 6.1.3创建对象: 构造器191 6.1.4访问对象成员——点运算192 6.1.5UML类图193 6.1.6一点思考193 6.2有理数的四则运算194 6.2.1私有成员198 6.2.2运算符重载199 6.2.3静态成员和类成员200 6.2.4@property201 6.2.5析构器204 6.3身体质量指数计算器205 6.3.1tkinter208 6.3.2小构件Widget210 6.3.3事件驱动212 小结213 你学到了什么213 程序练习题214 项目设计215 实验指导215 第7章批量数据处理——序列程序设计216 7.1一组数据排序问题216 7.1.1一维数组与列表list221 7.1.2创建列表222 7.1.3访问列表元素226 7.1.4列表的输入输出230 7.1.5列表作为函数的参数231 7.1.6序列数据排序231 7.1.7函数作为函数的参数233 7.1.8元组234 7.1.9打包与解包235 7.1.10字典236 7.1.11可变长参数238 7.2三门课程成绩按总分排序问题239 7.2.1二维数组与列表242 7.2.2创建二维列表243 7.2.3二维列表元素的引用244 7.2.4二维列表的排序245 7.2.5二维列表作为函数的参数248 7.3查找成绩问题248 7.3.1学生对象列表252 7.3.2字符串类型253 7.3.3字符串的运算255 7.3.4字符串常量257 7.3.5正则表达式及其应用257 7.3.6线性查找260 7.3.7折半查找260 7.4在画布上绘制图形261 7.4.1画布264 7.4.2鼠标事件264 7.4.3菜单265 小结266 你学到了什么267 程序练习题267 项目设计271 实验指导271 第8章代码重用——面向对象程序设计进阶272 8.1课程管理272 8.1.1代码复用机制——组合281 8.1.2集合数据类型281 8.1.3可hash对象282 8.1.4对象的链式存储283 8.1.5类的嵌套与轻量级类285 8.2具有层次结构的规则几何图形286 8.2.1代码重用机制——继承290 8.2.2覆盖方法291 8.2.3多态性和动态绑定291 8.2.4抽象基类292 8.3一个文本编辑器293 8.3.1对话框296 8.3.2小构件Text297 小结297 你学到了什么298 程序练习题298 项目设计299 实验指导300 第9章对象的持久存储——文件I/O程序设计301 9.1给一个源程序文件做备份301 9.1.1文件与目录303 9.1.2文件格式304 9.1.3文件操作的一般步骤304 9.1.4文本文件基本读写方法306 9.1.5上下文管理器307 9.1.6命令行参数307 9.2把数据保存到文件中308 9.2.1格式化文本文件读写312 9.2.2JSON格式314 9.2.3二进制文件读写315 9.2.4pickle序列化317 9.2.5struct序列化318 9.3建立一个数据库320 9.3.1关系数据库和SQL语句326 9.3.2SQLite数据库管理系统327 9.3.3sqlite3模块328 小结329 你学到了什么330 程序练习题330 项目设计332 实验指导333 第10章数据分析与可视化——数组程序设计334 10.1速度计算问题334 10.1.1NumPy库337 10.1.2matplotlib库338 10.2鸢尾花数据统计339 10.2.1NumPy的自定义类型和类型转换341 10.2.2NumPy支持的描述性统计343 10.3运动员信息分析344 10.3.1Pandas347 10.3.2闭包348 10.3.3函数修饰器351 10.4文本数据分析353 10.4.1jieba355 10.4.2Wordcloud355 小结356 你学到了什么356 程序练习题357 项目实战357 实验指导358 后记——Python之禅359 附录APython快速参考362 附录BASCII码364 附录C转义序列365 附录D运算符的优先级366 附录E索引367 参考文献371