计算机
类型
可以朗读
语音朗读
247千字
字数
2021-09-01
发行日期
展开全部
主编推荐语
以数学为切入点,以Python编程语言为工具,介绍大量流行的编程题目的解题思路,并且提供了多种解题方案。
内容简介
本书涉及的编程题目领域广泛,包括数字类题目、图形类题目、字符串类题目、数据结构类题目以及游戏类题目等,由浅入深地训练读者的编程思维能力。
通过本书的学习,读者可以掌握使用编程工具解决问题的核心思路,并能够独立思考和解决各种场景下的编程问题。
对于从未接触过编程的人员来说,本书以问题驱动的教学方法,因为有趣且强调动手实践,非常适合初学者快速入门。
对于编程人员来说,本书介绍的解题思路和算法可以帮助编程人员提高代码质量。
本书也适合编程领域的求职者使用,书中提供的编程题目很多都是面试中常见的算法问题。
目录
- 版权信息
- 作者介绍
- 内容简介
- 前言
- 第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 看得见的游戏
- 使用Pygame游戏开发框架
- 13.4 各种有趣而强大的Python模块
- 13.4.1 快速搭建网站
- 13.4.2 智能爬虫
- 本章结语
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。