-
内容大纲
本书以数学为切入点,以Python编程语言为工具,介绍大量流行的编程题目的解题思路,并且提供了多种解题方案。本书涉及的编程题目领域广泛,包括数字类题目、图形类题目、字符串类题目、数据结构类题目以及游戏类题目等,由浅入深地训练读者的编程思维能力。通过本书的学习,读者可以掌握使用编程工具解决问题的核心思路,并能够独立思考和解决各种场景下的编程问题。
对于从未接触过编程的人员来说,本书以问题驱动的教学方法,因为有趣且强调动手实践,非常适合初学者快速入门。对于编程人员来说,本书介绍的解题思路和算法可以帮助编程人员提高代码质量。本书也适合编程领域的求职者使用,书中提供的编程题目很多都是面试中常见的算法问题。 -
作者介绍
张益珲(网名:珲少),多年iOS开发经验,51CTO学院、CSDN学院签约讲师,麦子学院金牌讲师。参与开发iOS平台系列游戏:疯狂越狱1-2、应用物通配货软件、VIPExam考试库、证券财经软件等。曾就职于中国唯品会,主要从事移动端应用开发,对iOS开发、React Native跨平台开发及JavaScript前端开发都拥有丰富的经验。曾出版《iOS开发实战:从零基础到App Store上架》《React Native全教程:移动端跨平台应用开发》等多本编程著作。 -
目录
第1章 走进Python世界
1.1 认识Python
1.1.1 Python的由来
1.1.2 Python可以做什么
1.2 开发环境准备
1.2.1 安装Python语言包
1.2.2 使用Sublime Text编程工具
1.3 编程中的基础概念
1.3.1 面向过程编程中的基础概念
1.3.2 面向对象编程中的基础概念
1.4 Python语法初步
1.4.1 编程风格
1.4.2 变量与数据类型
1.4.3 运算符
1.4.4 流程控制语句
1.4.5 常用的数学函数
1.4.6 字符串操作相关方法
1.4.7 列表操作相关方法
1.4.8 字典操作相关方法
1.4.9 函数
1.5 Python面向对象编程
1.5.1 Python中的类
1.5.2 类的继承
1.5.3 模块和包的应用
本章结语
第2章 编程与数学
2.1 二进制运算
2.1.1 计算机的思考方式
2.1.2 计算机中数据的存储方式
2.2 灵活使用程序打印数据
2.2.1 小试牛刀——打印乘法口诀表
2.2.2 小试牛刀——打印简单图形
2.3 小试牛刀——简易计算器
2.3.1 接收用户输入
2.3.2 在终端运行的简易计算器
本章结语
第3章 有趣的数字——特殊数
3.1 阿姆斯特朗数
3.1.1 什么是阿姆斯特朗数
3.1.2 算法与实现——判断一个数是否为阿姆斯特朗数
3.2 自除数
3.2.1 算法与实现——筛选自除数
3.2.2 使用高级循环方法对代码进行优化
3.3 完全平方数
3.3.1 算法实现——四平方数和定理
3.3.2 编程实现——解决完全平方数问题
3.4 强整数
3.4.1 编程实现——筛选强整数
3.4.2 代码改进——强整数检索上限的寻找
3.5 回文数
3.5.1 编程实现——判断回文数
3.5.2 代码改进——求回文素数
3.6 丑数
3.6.1 编程实现——如何判断丑数
3.6.2 代码改进——尝试找到第n个丑数
3.6.3 代码改进——解决丑数扩展问题
3.6.4 算法改进——使用二分查找第n个丑数
3.7 完美数
3.7.1 完美数的故事
3.7.2 编程实现——如何判断完美数
3.8 快乐数
3.9 顺次数
3.10 步进数
3.11 中心对称数
3.11.1 编程实现——通过字典映射来判断中心对称数
3.11.2 代码改进——查找指定位数的中心对称数
3.11.3 代码改进——确定中心对称数的个数
3.12 累加数
3.13 易混淆数
本章结语
第4章 有趣的数字——数字计算
4.1 二进制相关运算
4.1.1 编程实现——二进制求和
4.1.2 编程实现——求十进制数的反码
4.1.3 编程实现——计算汉明距离
4.1.4 代码改进——求二进制数中1的最长间距
4.1.5 代码改进——颠倒二进制数
4.2 玩转四则运算
4.2.1 编程实现——一个数的各位相加
4.2.2 编程实现——不用加减乘除运算符做加法
4.2.3 代码改进——求阶乘的尾数
4.3 数字间的特殊运算
4.3.1 编程实现——平方根函数
4.3.2 编程实现——求平方数之和
4.3.3 编程实现——判断一个数是否为某数的幂次方
4.4 计算质数
4.4.1 编程实现——统计质数个数
4.4.2 编程实现——深度判断二进制数中特殊数的个数
4.5 数字转换
4.5.1 编程实现——整数转换
4.5.2 编程实现——整数转换成十六进制数
4.5.3 编程实现——将分数转换成小数
4.5.4 编程实现——罗马数字转整数
4.5.5 代码改进——整数转罗马数字
本章结语
第5章 图形世界的点线面
5.1 有趣的点与线
5.1.1 编程实现——连点成线
5.1.2 编程实现——最短时间内访问所有的点
5.1.3 编程实现——找到穿过最多点的直线
5.2 图形的奥妙
5.2.1 编程实现——输出杨辉三角
5.2.2 代码改进——尝试输出杨辉三角的某一行
5.2.3 编程实现——规划一个矩形合理的长和宽
5.2.4 编程实现——判断矩形是否重叠
5.2.5 代码改进——判断圆和矩形是否有重叠
5.2.6 编程实现——统计有效三角形的个数
5.3 周长与面积
5.3.1 编程实现——求重叠矩形的面积
5.3.2 编程实现——找到最小面积的矩形
5.3.3 编程实现——求三角形的最大周长
5.3.4 编程实现——求最大的三角形面积
5.4 凸多边形
5.4.1 什么是凸多边形
5.4.2 向量叉乘
5.4.3 编程实现——判断凸多边形
5.5 三维图形
5.5.1 编程实现——计算三维形体的表面积
5.5.2 代码改进——求解三维形体的投影面积
本章结语
第6章 探索字符的世界——字符串操作
6.1 字符串的排列
6.1.1 编程实现——格式化字符串
6.1.2 编程实现——格式化字符串进阶
6.1.3 编程实现——字符串全排列
6.1.4 编程实现——根据字符出现的频率进行排序
6.1.5 编程实现——交换字符
6.2 字符串的分割
6.2.1 平衡字符串的分割
6.2.2 编程实现——分割出回文字符串
6.2.3 编程实现——分割字符串获取最大分数
6.3 字符串的查找与统计
6.3.1 编程实现——统计连续字符的长度
6.3.2 编程实现——检查字符串中所有的字符是否唯一
6.3.3 编程实现——查找第一次出现的唯一字符
6.3.4 编程实现——求最长不含重复字符的子字符串长度
6.3.5 编程实现——查找常用字符
6.4 字符串的变换
6.4.1 编程实现——字符串平移
6.4.2 编程实现——字符串平移加密
6.4.3 编程实现——压缩字符串
6.4.4 编程实现——字符串解压
6.4.5 编程实现——将数字翻译成字符串
本章结语
第7章 探索字符的世界——字符串应用
7.1 单词提取
7.1.1 编程实现——统计字符串中的单词个数
7.1.2 编程实现——返回字符最后一个单词的长度
7.1.3 编程实现——统计最常用的单词
7.1.4 编程实现——拆分单词
7.1.5 编程实现——计算单词的最短距离
7.2 词句重组
7.2.1 编程实现——从字符串中返回字母组成单词
7.2.2 编程实现——语句逆序
7.2.3 编程实现——语句重排
7.2.4 编程实现——单词前缀替换
7.3 单词缩写
7.3.1 编程实现——判断是否有相同的缩写
7.3.2 编程实现——列举单词所有缩写形式
7.4 语句处理
7.4.1 编程实现——比较语句的差异
7.4.2 编程实现——分析词组
7.5 回文字符串
7.5.1 编程实现——验证回文字符串
7.5.2 编程实现——构造回文字符串
7.5.3 编程实现——找到最长的回文子字符串
7.5.4 编程实现——拼接构成回文串
7.6 字符串的复杂操作
7.6.1 编程实现——字符串解码
7.6.2 编程实现——构建IP地址
7.6.3 编程实现——验证IP地址的有效性
7.6.4 编程实现——实现模糊匹配
本章结语
第8章 玩转数据结构——列表与链表
8.1 获取列表中的信息
8.1.1 编程实现——寻找列表平衡点
8.1.2 编程实现——找到列表中缺失的元素
8.1.3 代码改进——寻找所有整数中两数之差绝对值的最大值
8.1.4 代码改进——根据条件获取列表中的值
8.1.5 代码改进——寻找列表中连续元素的和的最大值
8.1.6 代码改进——寻找列表中最长的连续递增序列
8.1.7 代码改进——寻找重复次数最多的元素
8.1.8 代码改进——寻找列表的凸点
8.2 列表操作
8.2.1 编程实现——将列表中的0进行后置
8.2.2 代码改进——递增列表的合并
8.2.3 代码改进——向列表中插入元素
8.2.4 代码改进——清除重复元素
8.2.5 代码改进——列表分隔问题
8.2.6 代码改进——对列表进行原地排序
8.2.7 代码改进——判断列表是否有序
8.2.8 编程实现——构建斐波那契数列
8.3 列表中元素的和
8.3.1 编程实现——找到列表中合适的两个元素
8.3.2 代码改进——找出列表中所有满足条件的三元素组
8.4 简单链表操作
8.4.1 编程实现——遍历链表
8.4.2 代码改进——删除链表中的节点
8.4.3 代码改进——链表合并
8.4.4 代码改进——链表转整数
8.5 特殊性质的链表
8.5.1 编程实现——判断回文链表
8.5.2 代码改进——判断环形链表
8.5.3 链表重构——奇偶排列的链表
8.6 高级链表操作
8.6.1 编程实现——链表大数求和
8.6.2 代码改进——链表重排
8.6.3 代码改进——对链表进行原地排序
8.6.4 代码改进——旋转链表
8.6.5 代码改进——交换链表相邻的节点
8.6.6 编程实现——设计链表结构
本章结语
第9章 玩转数据结构——栈、堆与队列
9.1 简单栈数据结构
9.1.1 编程实现——设计栈结构
9.1.2 代码改进——利用栈清理无效的括号
9.1.3 代码改进——处理平衡括号
9.1.4 代码改进——进行括号内容逆序
9.1.5 代码改进——删除最外层括号
9.1.6 代码改进——补充缺失的括号
9.1.7 代码改进——递归删除重复的相邻字符
9.1.8 代码改进——实现条件运算符
9.1.9 代码改进——简化文件路径
9.2 堆的简单应用
9.2.1 什么是堆
9.2.2 编程实现——查找高频单词
9.2.3 编程实现——寻找最接近原点的n个点
9.3 队列的简单应用
9.3.1 编程实现——设计队列
9.3.2 代码改进——设计循环队列
本章结语
第10章 玩转数据结构——树与图
10.1 二叉树的判定
10.1.1 编程实现——解析二叉树的深度
10.1.2 代码改进——平衡二叉树的判定
10.1.3 代码改进——对称二叉树的判定
10.1.4 代码改进——判断两棵二叉树是否相同
10.1.5 代码改进——二叉树相加
10.1.6 代码改进——单值二叉树的判定
10.2 二叉树的遍历
10.2.1 编程实现——二叉树的前序遍历
10.2.2 代码改进——二叉树的中序遍历和后序遍历
10.2.3 代码改进——根据层序遍历二叉树
10.2.4 代码改进——垂直遍历二叉树
10.2.5 代码改进——将二叉树的遍历方式推广到N叉树
10.3 构造二叉树
10.3.1 编程实现——从遍历结果构造二叉树
10.3.2 代码改进——通过有序列表构造二叉搜索树
10.3.3 代码改进——在二叉搜索树中插入元素
10.4 删除二叉树中的节点
10.4.1 编程实现——在二叉搜索树中删除节点
10.4.2 代码改进——清除二叉树中的指定叶子节点
10.5 获取二叉树中存储的信息
10.5.1 编程实现——判断是否为堂兄弟节点
10.5.2 代码改进——获取二叉树中指定节点值的和
10.5.3 代码改进——计算二叉树路径的和
10.5.4 代码改进——计算树及所有子树的平均值
10.5.5 代码改进——完全二叉树的节点个数
10.6 图结构的应用
10.6.1 编程实现——网格中的最近距离
10.6.2 代码改进——找到无环图中所有的路径
本章结语
第11章 烧脑游戏编程—— 热身篇
11.1 上楼梯
11.2 猜数字游戏
11.3 套餐组合问题
11.4 种树问题
11.5 算术机器人
11.6 单行的键盘
11.7 统计运动员的名次
11.8 分金币
11.9 传绣球游戏
11.10 扑克游戏
11.11 酒瓶子问题
11.12 所有可能的木板长度
11.13 电脑高手
11.14 灯泡问题
11.14.1 亮着的灯泡
11.14.2 不同功能的按钮
11.14.3 蓝色灯光的灯泡
11.14.4 翻转灯泡的状态
11.15 宝石鉴定
11.16 翻转游戏
11.17 井字棋的输赢判定
11.18 分发糖果问题
11.18.1 怎样分糖果可以尽可能多地使儿童满足
11.18.2 给弟弟分糖果
11.18.3 分发糖果
11.19 排布硬币
11.20 列表变换游戏
11.21 国际象棋中的车
11.22 计算员工的平均工资
11.23 比赛计分
11.24 股票买卖的最大盈利
11.25 单词组合游戏
本章结语
第12章 烧脑游戏编程——进阶篇
12.1 统计战舰个数
12.2 田忌赛马
12.3 炸弹人游戏
12.4 消除数字
12.5 为赛车加油
12.6 马走日
12.7 最大的岛屿面积
12.8 跳跃游戏
12.9 拿石子游戏
12.10 分割绳子
12.11 载人过河
12.12 迅捷斥候——提莫
12.13 水壶问题
12.14 叠罗汉
12.15 活字印刷术
本章结语
第13章 巧用编程工具
13.1 更加强大的编辑器
13.1.1 下载与配置VSCode
13.1.2 进行Python代码的调试
13.2 编写有趣的界面应用
13.2.1 使用Python开发桌面应用
13.2.2 进行用户交互
13.3 看得见的游戏
13.4 各种有趣而强大的Python模块
13.4.1 快速搭建网站
13.4.2 智能爬虫
本章结语
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...