- ISBN:9787302589761
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:324
- 出版时间:2021-10-01
- 条形码:9787302589761 ; 978-7-302-58976-1
本书特色
本书以数学为切入点,介绍用编程来解决数学问题,其中涉及的算法和游戏相关的题目也与数学相关。 本书针对有兴趣学习编程的初学者编写。本书不仅介绍Python编程的基本概念与入门知识,还介绍了大量常见的算法和游戏编程示例,其目的是锻炼读者的编程思维和提升动手能力。 本书以问题驱动为主线——通过提出一系列问题,然后介绍如何使用编程这种工具来解决它!这也是本书的独特之处。 你会发现,本书每一节的开头首先会提出一个问题,当你看到问题时,可以先思考如何解决,尝试自己动手编程来解决此问题,无论你是否能够成功解决,思考的过程都能使你受益,自主尝试解决后,再继续阅读书中提供的解题思路与方法,*终与自己的思考结果相结合,从而不断进步。 本书涉及的题目分为三大类,一类是数学题目,这些题目很多都是中学学过的,如数学问题、几何图形相关的问题,看起来很简单,但也需要读者对问题进行思考与分析,设计出合适的算法编写程序来解决;第二类是算法问题,这类问题大都是数据结构相关的问题,如列表、栈、树、图等,对于这类问题,本书会给出概念和原理,即使你没有学过数据结构也一样可以轻松理解;第三类是游戏问题,这类问题也可以看作数学应用题以游戏的方式呈现出来,其中很多题目来自生活中的场景,如何将生活场景问题进行抽象,之后通过编程的方式解决,是本类问题的核心。 从数学问题到算法问题,再到游戏问题,每一类问题都会有多种题目,通过练习解答更多的题目,你的编程技艺和抽象思维能力也就在不知不觉中大幅提升了。 通过学习本书你会发现,编程并不是只有专业人士才能干的事,任何人只要有兴趣都可以学会它,重要的是你可以用编程来解决问题!
内容简介
《每个人的Python:数学、算法和游戏编程训练营(微课版)》以数学为切入点,以Python编程语言为工具,介绍大量流行的编程题目的解题思路,并且提供了多种解题方案。该书涉及的编程题目领域广泛,包括数字类题目、图形类题目、字符串类题目、数据结构类题目以及游戏类题目等,由浅入深地训练读者的编程思维能力。通过该书的学习,读者可以掌握使用编程工具解决问题的核心思路,并能够独立思考和解决各种场景下的编程问题。 对于从未接触过编程的人员来说,该书以问题驱动的教学方法,因为有趣且强调动手实践,非常适合初学者快速入门。对于编程人员来说,该书介绍的解题思路和算法可以帮助编程人员提高代码质量。 《每个人的Python:数学、算法和游戏编程训练营(微课版)》也适合编程领域的求职者使用,书中提供的编程题目很多都是面试中常见的算法问题。
目录
目 录
第1章 走进Python世界 1
1.1 认识Python 1
1.1.1 Python的由来 1
1.1.2 Python可以做什么 2
1.2 开发环境准备 3
1.2.1 安装Python语言包 3
1.2.2 使用Sublime Text编程工具 4
1.3 编程中的基础概念 6
1.3.1 面向过程编程中的基础概念 6
1.3.2 面向对象编程中的基础概念 8
1.4 Python语法初步 9
1.4.1 编程风格 9
1.4.2 变量与数据类型 10
1.4.3 运算符 13
1.4.4 流程控制语句 15
1.4.5 常用的数学函数 17
1.4.6 字符串操作相关方法 18
1.4.7 列表操作相关方法 20
1.4.8 字典操作相关方法 20
1.4.9 函数 21
1.5 Python面向对象编程 22
1.5.1 Python中的类 23
1.5.2 类的继承 24
1.5.3 模块和包的应用 25
本章结语 27
第2章 编程与数学 28
2.1 二进制运算 28
2.1.1 计算机的思考方式 29
2.1.2 计算机中数据的存储方式 30
2.2 灵活使用程序打印数据 31
2.2.1 小试牛刀——打印乘法口诀表 31
2.2.2 小试牛刀——打印简单图形 33
2.3 小试牛刀——简易计算器 36
2.3.1 接收用户输入 37
2.3.2 在终端运行的简易计算器 38
本章结语 40
第3章 有趣的数字——特殊数 41
3.1 阿姆斯特朗数 41
3.1.1 什么是阿姆斯特朗数 42
3.1.2 算法与实现——判断一个数是否为阿姆斯特朗数 42
3.2 自除数 43
3.2.1 算法与实现——筛选自除数 43
3.2.2 使用高级循环方法对代码进行优化 44
3.3 完全平方数 45
3.3.1 算法实现——四平方数和定理 45
3.3.2 编程实现——解决完全平方数问题 46
3.4 强整数 47
3.4.1 编程实现——筛选强整数 47
3.4.2 代码改进——强整数检索上限的寻找 48
3.5 回文数 48
3.5.1 编程实现——判断回文数 48
3.5.2 代码改进——求回文素数 49
3.6 丑数 50
3.6.1 编程实现——如何判断丑数 51
3.6.2 代码改进——尝试找到第n个丑数 52
3.6.3 代码改进——解决丑数扩展问题 53
3.6.4 算法改进——使用二分查找第n个丑数 53
3.7 完美数 55
3.7.1 完美数的故事 55
3.7.2 编程实现——如何判断完美数 55
3.8 快乐数 56
3.9 顺次数 57
3.10 步进数 58
3.11 中心对称数 60
3.11.1 编程实现——通过字典映射来判断中心对称数 60
3.11.2 代码改进——查找指定位数的中心对称数 60
3.11.3 代码改进——确定中心对称数的个数 61
3.12 累加数 63
3.13 易混淆数 64
本章结语 65
第4章 有趣的数字——数字计算 66
4.1 二进制相关运算 66
4.1.1 编程实现——二进制求和 66
4.1.2 编程实现——求十进制数的反码 67
4.1.3 编程实现——计算汉明距离 68
4.1.4 代码改进——求二进制数中1的*长间距 69
4.1.5 代码改进——颠倒二进制数 70
4.2 玩转四则运算 70
4.2.1 编程实现——一个数的各位相加 71
4.2.2 编程实现——不用加减乘除运算符做加法 72
4.2.3 代码改进——求阶乘的尾数 73
4.3 数字间的特殊运算 74
4.3.1 编程实现——平方根函数 74
4.3.2 编程实现——求平方数之和 75
4.3.3 编程实现——判断一个数是否为某数的幂次方 75
4.4 计算质数 76
4.4.1 编程实现——统计质数个数 76
4.4.2 编程实现——深度判断二进制数中特殊数的个数 78
4.5 数字转换 79
4.5.1 编程实现——整数转换 79
4.5.2 编程实现——整数转换成十六进制数 80
4.5.3 编程实现——将分数转换成小数 81
4.5.4 编程实现——罗马数字转整数 83
4.5.5 代码改进——整数转罗马数字 84
本章结语 85
第5章 图形世界的点线面 86
5.1 有趣的点与线 86
5.1.1 编程实现——连点成线 86
5.1.2 编程实现——*短时间内访问所有的点 88
5.1.3 编程实现——找到穿过*多点的直线 89
5.2 图形的奥妙 91
5.2.1 编程实现——输出杨辉三角 91
5.2.2 代码改进——尝试输出杨辉三角的某一行 92
5.2.3 编程实现——规划一个矩形合理的长和宽 93
5.2.4 编程实现——判断矩形是否重叠 94
5.2.5 代码改进——判断圆和矩形是否有重叠 95
5.2.6 编程实现——统计有效三角形的个数 97
5.3 周长与面积 98
5.3.1 编程实现——求重叠矩形的面积 98
5.3.2 编程实现——找到*小面积的矩形 100
5.3.3 编程实现——求三角形的*大周长 103
5.3.4 编程实现——求*大的三角形面积 104
5.4 凸多边形 105
5.4.1 什么是凸多边形 105
5.4.2 向量叉乘 106
5.4.3 编程实现——判断凸多边形 106
5.5 三维图形 107
5.5.1 编程实现——计算三维形体的表面积 107
5.5.2 代码改进——求解三维形体的投影面积 109
本章结语 110
第6章 探索字符的世界——字符串操作 111
6.1 字符串的排列 111
6.1.1 编程实现——格式化字符串 111
6.1.2 编程实现——格式化字符串进阶 113
6.1.3 编程实现——字符串全排列 114
6.1.4 编程实现——根据字符出现的频率进行排序 116
6.1.5 编程实现——交换字符 117
6.2 字符串的分割 119
6.2.1 平衡字符串的分割 119
6.2.2 编程实现——分割出回文字符串 120
6.2.3 编程实现——分割字符串获取*大分数 121
6.3 字符串的查找与统计 121
6.3.1 编程实现——统计连续字符的长度 121
6.3.2 编程实现——检查字符串中所有的字符是否唯一 122
6.3.3 编程实现——查找**次出现的唯一字符 123
6.3.4 编程实现——求*长不含重复字符的子字符串长度 124
6.3.5 编程实现——查找常用字符 125
6.4 字符串的变换 126
6.4.1 编程实现——字符串平移 126
6.4.2 编程实现——字符串平移加密 127
6.4.3 编程实现——压缩字符串 128
6.4.4 编程实现——字符串解压 129
6.4.5 编程实现——将数字翻译成字符串 131
本章结语 132
第7章 探索字符的世界——字符串应用 133
7.1 单词提取 133
7.1.1 编程实现——统计字符串中的单词个数 133
7.1.2 编程实现——返回字符*后一个单词的长度 134
7.1.3 编程实现——统计*常用的单词 135
7.1.4 编程实现——拆分单词 136
7.1.5 编程实现——计算单词的*短距离 137
7.2 词句重组 138
7.2.1 编程实现——从字符串中返回字母组成单词 138
7.2.2 编程实现——语句逆序 139
7.2.3 编程实现——语句重排 139
7.2.4 编程实现——单词前缀替换 140
7.3 单词缩写 141
7.3.1 编程实现——判断是否有相同的缩写 141
7.3.2 编程实现——列举单词所有缩写形式 143
7.4 语句处理 144
7.4.1 编程实现——比较语句的差异 144
7.4.2 编程实现——分析词组 145
7.5 回文字符串 146
7.5.1 编程实现——验证回文字符串 146
7.5.2 编程实现——构造回文字符串 147
7.5.3 编程实现——找到*长的回文子字符串 149
7.5.4 编程实现——拼接构成回文串 149
7.6 字符串的复杂操作 150
7.6.1 编程实现——字符串解码 150
7.6.2 编程实现——构建IP地址 152
7.6.3 编程实现——验证IP地址的有效性 153
7.6.4 编程实现——实现模糊匹配 155
本章结语 156
第8章 玩转数据结构——列表与链表 157
8.1 获取列表中的信息 158
8.1.1 编程实现——寻找列表平衡点 158
8.1.2 编程实现——找到列表中缺失的元素 158
8.1.3 代码改进——寻找所有整数中两数之差绝对值的*大值 159
8.1.4 代码改进——根据条件获取列表中的值 161
8.1.5 代码改进——寻找列表中连续元素的和的*大值 161
8.1.6 代码改进——寻找列表中*长的连续递增序列 163
8.1.7 代码改进——寻找重复次数*多的元素 164
8.1.8 代码改进——寻找列表的凸点 165
8.2 列表操作 166
8.2.1 编程实现——将列表中的0进行后置 166
8.2.2 代码改进——递增列表的合并 167
8.2.3 代码改进——向列表中插入元素 169
8.2.4 代码改进——清除重复元素 169
8.2.5 代码改进——列表分隔问题 171
8.2.6 代码改进——对列表进行原地排序 172
8.2.7 代码改进——判断列表是否有序 172
8.2.8 编程实现——构建斐波那契数列 173
8.3 列表中元素的和 174
8.3.1 编程实现——找到列表中合适的两个元素 174
8.3.2 代码改进——找出列表中所有满足条件的三元素组 175
8.4 简单链表操作 177
8.4.1 编程实现——遍历链表 178
8.4.2 代码改进——删除链表中的节点 179
8.4.3 代码改进——链表合并 181
8.4.4 代码改进——链表转整数 182
8.5 特殊性质的链表 183
8.5.1 编程实现——判断回文链表 183
8.5.2 代码改进——判断环形链表 183
8.5.3 链表重构——奇偶排列的链表 185
8.6 高级链表操作 186
8.6.1 编程实现——链表大数求和 186
8.6.2 代码改进——链表重排 188
8.6.3 代码改进——对链表进行原地排序 189
8.6.4 代码改进——旋转链表 190
8.6.5 代码改进——交换链表相邻的节点 191
8.6.6 编程实现——设计链表结构 192
本章结语 195
第9章 玩转数据结构——栈、堆与队列 196
9.1 简单栈数据结构 196
9.1.1 编程实现——设计栈结构 197
9.1.2 代码改进——利用栈清理无效的括号 198
9.1.3 代码改进——处理平衡括号 199
9.1.4 代码改进——进行括号内容逆序 200
9.1.5 代码改进——删除*外层括号 201
9.1.6 代码改进——补充缺失的括号 202
9.1.7 代码改进——递归删除重复的相邻字符 203
9.1.8 代码改进——实现条件运算符 205
9.1.9 代码改进——简化文件路径 206
9.2 堆的简单应用 208
9.2.1 什么是堆 208
9.2.2 编程实现——查找高频单词 209
9.2.3 编程实现——寻找*接近原点的n个点 210
9.3 队列的简单应用 211
9.3.1 编程实现——设计队列 211
9.3.2 代码改进——设计循环队列 213
本章结语 215
第10章 玩转数据结构——树与图 216
10.1 二叉树的判定 217
10.1.1 编程实现——解析二叉树的深度 218
10.1.2 代码改进——平衡二叉树的判定 220
10.1.3 代码改进——对称二叉树的判定 221
10.1.4 代码改进——判断两棵二叉树是否相同 223
10.1.5 代码改进——二叉树相加 224
10.1.6 代码改进——单值二叉树的判定 226
10.2 二叉树的遍历 226
10.3 构造二叉树 233
10.4 删除二叉树中的节点 238
10.5 获取二叉树中存储的信息 242
10.6 图结构的应用 249
本章结语 253
第11章 烧脑游戏编程—— 热身篇 254
11.1 上楼梯 254
11.2 猜数字游戏 255
11.3 套餐组合问题 256
11.4 种树问题 257
11.5 算术机器人 258
11.6 单行的键盘 259
11.7 统计运动员的名次 260
11.8 分金币 260
11.9 传绣球游戏 261
11.10 扑克游戏 263
11.11 酒瓶子问题 264
11.12 所有可能的木板长度 265
11.13 电脑高手 265
11.14 灯泡问题 267
11.15 宝石鉴定 272
11.16 翻转游戏 272
11.17 井字棋的输赢判定 273
11.18 分发糖果问题 275
11.19 排布硬币 278
11.20 列表变换游戏 279
11.21 国际象棋中的车 280
11.22 计算员工的平均工资 282
11.23 比赛计分 283
11.24 股票买卖的*大盈利 284
11.25 单词组合游戏 285
本章结语 286
第12章 烧脑游戏编程——进阶篇 287
12.1 统计战舰个数 287
12.2 田忌赛马 289
12.3 炸弹人游戏 290
12.4 消除数字 291
12.5 为赛车加油 293
12.6 马走日 295
12.7 *大的岛屿面积 297
12.8 跳跃游戏 298
12.9 拿石子游戏 301
12.10 分割绳子 301
12.11 载人过河 302
12.12 迅捷斥候——提莫 304
12.13 水壶问题 305
12.14 叠罗汉 307
12.15 活字印刷术 308
本章结语 309
第13章 巧用编程工具 310
13.1 更加强大的编辑器 310
13.2 编写有趣的界面应用 315
13.3 看得见的游戏 317
13.4 各种有趣而强大的Python模块 319
本章结语 324
作者简介
张益珲(网名:珲少) 多年iOS开发经验,51CTO学院、CSDN学院签约讲师 ,主要从事移动端应用开发,曾就职于国内知名电商网站,从事iOS端应用程序的业务开发与性能优化工作。目前在国内知名社交产品公司从事IM系统的架构设计工作。对iOS开发、React Native和Flutter跨平台开发及JavaScript前端开发都拥有丰富的经验。已出版《iOS开发实战:从零基础到App Store上架》《React Native全教程:移动端跨平台应用开发》《iOS开发实战:从零基础到上架App Store(第3版)》《Swift从零到精通iOS开发》等多本编程著作。开源中国特邀技术专家,发表相关技术博客400余篇,访问量100万余次。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
情感计算
¥66.8¥89.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥38.7¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0