Think Python
How to Think Like a Computer Scientist
像计算机科学家一样思考
2nd Edition, Version 2.2.14
Think Python
How to Think Like a Computer Scientist
像计算机科学家一样思考
2nd Edition, Version 2.2.14
2016 年 7 月 21 日
Allen Downey
Green Tea Press
Needham, Massachusetts
Copyright © 2015 Allen Downey.
Green Tea Press
9 Washburn Ave
Needham MA 02492
Permission is granted to copy, distribute, and/or modify this document under the terms of the
Creative Commons Attribution-NonCommercial 3.0 Unported License, which is available at
http://creativecommons.org/licenses/by-nc/3.0/.
The original form of this book is L
A
T
E
X source code. Compiling this L
A
T
E
X source has the effect of
generating a device-independent representation of a textbook, which can be converted to other
formats and printed.
The L
A
T
E
X source for this book is available from http://www.thinkpython2.com
第一章 程序之道
本书的目标是教你像计算机科学家一样思考。这一思考方式集成了数学、工程以及自然
科学的一些最好的特点。像数学家一样,计算机科学家使用形式语言表示思想(具体来
说是计算)。像工程师一样,计算机科学家设计东西,将零件组成系统,在各种选择之
间寻求平衡。像科学家一样,计算机科学家观察复杂系统的行为,形成假设并且对预测
进行检验。
对于计算机科学家,最重要的技能是问题求解 的能力。问题求解 (problem solving) 意
味着对问题进行形式化,寻求创新型的解决方案,并且清晰、准确地表达解决方案的能
力。事实证明,学习编程的过程是锻炼问题解决能力的一个绝佳机会。这就是为什么本
章被称为 ‘‘程序之道’’。
一方面,你将学习如何编程,这本身就是一个有用的技能。另一方面,你将把编程作为
实现自己目的的手段。随着学习的深入,你会更清楚自己的目的。
1.1 什么是程序?
程序是一系列定义计算机如何执行计算 (computation) 的指令。这种计算可以是数学上
的计算,例如寻找公式的解或多项式的根,也可以是一个符号计算 (symbolic compu-
tation),例如在文档中搜索并替换文本或者图片,就像处理图片或播放视频。
不同编程语言所写程序的细节各不一样,但是一些基本的指令几乎出现在每种语言当
中:
输入 (input): 从键盘、文件、网络或者其他设备获取数据。
输出 (output): 在屏幕上显示数据,将数据保存至文件,通过网络传送数据,等等。
数学 (math): 执行基本的数学运算,如加法和乘法。
有条件执行 (conditional execution): 检查符合某个条件后,执行相应的代码。