本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写作而成,旨在帮助读者从外行成长为一名专业的Python程序员。
本书包括5部分内容:第一部分(第1~11章)介绍了编程基础知识,以及函数、容器、字符串、循环和模型等概念;第二部分(第12~15章)介绍了编程范式和面向对象编程等知识;第三部分(第16~20章)介绍了Bash、正则表达式、包管理器和版本控制等编程工具方面的知识;第四部分(第21~22章)主要涉及数据结构和算法方面的知识;第五部分(第23~27章)则是关于求职与团队协作的内容。
本书可以满足几乎所有想要学习编程的初学者。本书适合高中、大学阶段想要自学编程的学生,以及其他行业想入门编程的人,同时也适合作为编程入门的培训教材。
畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一。
作者从文科毕业,通过自学编程转行为专业程序员,在硅谷工作多年后成功技术创业。本书不仅教读者如何使用Python语言编程,还会介绍其他书中所忽略的、编程初学者应该了解并掌握的其他所有知识点。
很多初学者在读完其他类似的编程入门图书后,仍会很困惑:下一步该做什么?而本书,就是作者结合自身成功经验给出的答案。
本书每章采用“要点介绍+示例代码+术语总结+挑战练习”的模式,细化介绍编程入门所需的各个知识点。本书中一章所涵盖的许多主题可能都可以独立成书。但作者的目标并不是要读者了解到每个主题的所有细节,而是提供一份指引,一个编程职业发展所需要的所有技能的导览。
第一部分:编程概述。让你尽快写出自己的第一个程序,最好在今天。
第二部分:面向对象编程概述。将介绍不同的编程范式,着重阐述面向对象编程。你会开发一个游戏,体会编程的强大能力。读完这部分后你会沉迷于编程。
第三部分:编程工具概述。将介绍提升编程生产力的不同工具。这时,你已经沉迷于编程,并希望变得更好。你将会学习有关操作系统、如何使用正则表达式提升效率、如何安装并管理他人的程序,以及如何使用版本控制与其他工程师协作。
第四部分:计算机科学概述。将简要介绍计算机科学知识,主要涵盖两个主题—算法和数据结构。
第五部分:成功入职。最后一部分是关于最佳编程实践,如何找到软件工程师的工作,团队协作以及程序员的自我提升。我会分享如何通过技术面试与团队协作的建议,以及如何进一步提升自己的技能。
不管你从事什么工作,编程都有助于你的职业发展。学习编程将给你自己赋能。如果你之前没有任何编程经验,担心自己无法胜任编程工作,本书想告诉你的是:你完全有能力做到。人们对程序员有一些常见的误解,比如程序员都得擅长数学。这是错误的印象,不过编程确实是一件困难的工作。幸运的是,本书涵盖的内容将让这一切变得比你想象的更加容易。
科里(Cory Althoff)在大学主修政治学毕业后,通过自学编程知识顺利进入eBay,开启了其软件工程师的生涯。随后他在硅谷工作多年,现已利用技术开始了自主创业。本书是作者根据个人成功经验所作,专为所有想要自学编程的初学者准备;即便读者并不想成为一名专业的软件工程师,本书也会帮助每个人在其所属的行业中运用编程技能来提升工作能力,提高工作效率。
第 一部分 编程简介
第 1章 概述 3
1.1 本书的结构 4
1.2 从终点出发 4
1.3 你不是一个人在战斗 5
1.4 自学的优势 5
1.5 为什么应该编程 5
1.6 坚持不懈 6
1.7 本书的格式 6
1.8 本书使用的技术 6
1.9 术语表 7
1.10 挑战练习 7
第 2章 起步 9
2.1 什么是编程 9
2.2 什么是Python 10
2.3 安装Python 10
2.4 问题解答 11
2.5 交互式shell 11
2.6 保存程序 12
2.7 运行示例程序 12
2.8 术语表 13
2.9 挑战练习 13
第3章 编程概论 15
3.1 示例 15
3.2 注释 16
3.3 打印 17
3.4 代码行 17
3.5 关键字 18
3.6 间距 18
3.7 数据类型 19
3.8 常量和变量 21
3.9 语法 24
3.10 错误与异常 25
3.11 算术操作符 26
3.12 比较操作符 29
3.13 逻辑操作符 31
3.14 条件语句 34
3.15 语句 38
3.16 术语表 40
3.17 挑战练习 42
第4章 函数 43
4.1 表达概念 43
4.2 函数 44
4.3 定义函数 44
4.4 内置函数 47
4.5 复用函数 49
4.6 必选及可选参数 51
4.7 作用域 52
4.8 异常处理 55
4.9 文档字符串 58
4.10 有需要才使用变量 58
4.11 术语表 59
4.12 挑战练习 59
第5章 容器 61
5.1 方法 61
5.2 列表 62
5.3 元组 66
5.4 字典 69
5.5 容器嵌套容器 72
5.6 术语表 76
5.7 挑战练习 76
第6章 字符串操作 77
6.1 三引号字符串 77
6.2 索引 77
6.3 字符串是不可变的 79
6.4 字符串拼接 79
6.5 字符串乘法 80
6.6 改变大小写 80
6.7 格式化 80
6.8 分割 82
6.9 连接 82
6.10 去除空格 83
6.11 替换 84
6.12 查找索引 84
6.13 in关键字 85
6.14 字符串转义 85
6.15 换行符 86
6.16 切片 87
6.17 术语表 88
6.18 挑战练习 89
第7章 循环 91
7.1 for循环 91
7.2 range函数 95
7.3 while循环 95
7.4 break语句 96
7.5 continue语句 98
7.6 嵌套循环 99
7.7 术语表 100
7.8 挑战练习 101
第8章 模块 103
8.1 导入内置模块 103
8.2 导入其他模块 105
8.3 术语表 107
8.4 挑战练习 107
第9章 文件 109
9.1 写文件操作 109
9.2 自动关闭文件 110
9.3 读取文件 111
9.4 CSV文件 112
9.5 术语表 114
9.6 挑战练习 114
第 10章 综合练习 115
10.1 Hangman 116
10.2 挑战练习 119
第 11章 练习 121
11.1 阅读 121
11.2 其他资源 121
11.3 寻求帮助 121
第二部分 面对对象编程简介
第 12章 编程范式 125
12.1 状态 125
12.2 过程式编程 125
12.3 函数式编程 127
12.4 面向对象编程 128
12.5 术语表 133
12.6 挑战练习 134
第 13章 面向对象编程的
四大支柱 135
13.1 封装 135
13.2 抽象 138
13.3 多态 138
13.4 继承 140
13.5 组合 143
13.6 术语表 144
13.7 挑战练习 144
第 14章 深入面向对象编程 145
14.1 类变量与实例变量 145
14.2 魔法方法 147
14.3 is 149
14.4 术语表 150
14.5 挑战练习 150
第 15章 综合练习 151
15.1 卡牌 151
15.2 牌堆 153
15.3 玩家 154
15.4 游戏 155
15.5 战争 157
第三部分 编程工具简介
第 16章 Bash 163
16.1 跟随练习 163
16.2 找到Bash 164
16.3 命令 164
16.4 最近命令 165
16.5 相对路径与绝对路径 165
16.6 导航 166
16.7 旗标 168
16.8 隐藏文件 169
16.9 管道 169
16.10 环境变量 169
16.11 用户 170
16.12 了解更多 171
16.13 术语表 171
16.14 挑战练习 172
第 17章 正则表达式 173
17.1 初始配置 173
17.2 简单匹配 174
17.3 匹配起始位置 176
17.4 匹配多个字符 177
17.5 匹配数字 178
17.6 重复 179
17.7 转义 181
17.8 正则工具 182
17.9 术语表 182
17.10 挑战练习 183
第 18章 包管理器 185
18.1 包 185
18.2 pip 185
18.3 虚拟环境 188
18.4 术语表 188
18.5 挑战练习 188
第 19章 版本控制 189
19.1 代码仓库 189
19.2 入门 190
19.3 推送和拉取 191
19.4 推送示例 192
19.5 拉取示例 195
19.6 回退版本 195
19.7 diff 196
19.8 下一步 197
19.9 术语表 197
19.10 挑战练习 198
第 20章 融会贯通 199
20.1 HTML 199
20.2 爬取Google新闻 200
20.3 术语表 204
20.4 挑战练习 204
第四部分 计算机科学简介
第 21章 数据结构 207
21.1 数据结构 207
21.2 栈 207
21.3 使用栈逆转字符串 210
21.4 队列 211
21.5 购票队列 213
21.6 术语表 215
21.7 挑战练习 216
第 22章 算法 217
22.1 FizzBuzz 217
22.2 顺序搜索 218
22.3 回文词 219
22.4 变位词 220
22.5 计算字母频数 220
22.6 递归 221
22.7 术语表 223
22.8 挑战练习 224
第五部分 找到工作
第 23章 最佳编程实践 227
23.1 写代码是最后的手段 227
23.2 DRY 227
23.3 正交性 227
23.4 每个数据都只应保存在
一处 228
23.5 函数只做一件事 228
23.6 若耗费时间过长,你的做法
很可能就是错的 228
23.7 第 一次就要用最佳的方法
完成 228
23.8 遵循惯例 229
23.9 使用强大的IDE 229
23.10 记录日志 230
23.11 测试 230
23.12 代码审查 230
23.13 安全 231
23.14 术语表 232
第 24章 第 一份编程工作 233
24.1 选择方向 233
24.2 积累初期经验 234
24.3 拿到面试机会 234
24.4 面试 234
24.5 面试技巧 235
第 25章 团队协作 237
25.1 掌握基础 237
25.2 提问前请先搜索 237
25.3 修改代码 238
25.4 冒名顶替综合征 238
第 26章 更多学习资料 239
26.1 经典书籍 239
26.2 在线课堂 239
26.3 骇客新闻 240
第 27章 下一步 241
27.1 找到导师 241
27.2 加深理解 241
27.3 其他建议 242