像计算机科学家一样思考python.pdf
《像计算机科学家一样思考python.pdf》由会员分享,可在线阅读,更多相关《像计算机科学家一样思考python.pdf(172页珍藏版)》请在冰豆网上搜索。
-1-像计算机科学家那样思考像计算机科学家那样思考(中文版)(中文版)-2-目录贡献者名单.I前言.V序言.VII1程序之道.11.1Python程序语言.11.2程序是什么?
.31.3除虫是什么?
.31.4语法错误(Syntaxerrors).41.5执行错误(Runtimeerrors).41.6语意错误(Semanticerrors).41.7实验性除虫.41.8形式语言及自然语言.51.9第一个程序.71.10术语.71.11练习.92变数、表达式及陈述.112.1数值与型态.112.2变数.122.3变量名称与关键词.132.4陈述.142.5表达式求值.142.6运算子与操作数.152.7运算的次序.162.8字符串的运算.162.9输入.172.10组合.172.11批注.182.12术语.182.13练习.203函数.223.1函数定义及用法.223.2执行流程.243.3参数、自变量以及import陈述.243.4组合.263.5区域的概念:
变数及参数.263.6堆栈图.273.7术语.283.8练习.304条件式.324.1余数运算子.324.2布尔值与表达式.324.3逻辑运算子.334.4条件执行.33-3-4.5替代执行.344.6炼状条件式.354.7巢状条件式.354.8return陈述.364.9键盘输入.364.10型态转换.374.11Gasp.394.12术语.404.13练习.415多效函数.465.1传回值.465.2程序开发.475.3函数的组合.495.4布尔函数.505.5函数(function)型态.505.6有型的程序设计.515.7三引号字符串.525.8用doctest做单元测试.525.9术语.545.10练习.556重复.606.1多重指派.606.2更新变数.606.3while陈述.616.4追踪一个程序.626.5计算数字.636.6缩写指派.646.7表格.656.8二维表格.666.9封装与一般化.666.10更多的封装.676.11区域变量.686.12更多的一般化.686.13函数.706.14牛顿勘根法.706.15算法.706.16术语.716.17练习.727对照上面的doctests检查你的答案。
7.字符串.7577.字符串.767.1复合数据型态.767.2长度.767.3走访以及for循环.777.4字符串切片.787.5字符串比较.797.6字符串是不可变的.79-4-7.7in运算子.797.8Afind函数.807.9循环及参数.817.10选择性参数.817.11string模块.827.12字符的分类.837.13字符串格式化.847.14索引.867.15练习.878案例研究:
Catch.918.1起步.918.2用while移动球.918.3程度的调整.928.4使球弹回.938.5break陈述.938.6响应键盘.948.7检查碰撞.958.8组合这些片段.968.9显示文字.978.10抽象化.988.11术语.1018.12练习.1028.13专题:
pong.py.1029Tuple.1049.1可变性与tuple.1049.2Tuple指派.1059.3Tuple做为传回值.1069.4随机数字.1069.5随机数字列表.1079.6计算.1089.7许多分区.1099.8一个单程的解决方法.1119.9术语.11210缺少.11411档案和例外.11511.1文字文件.11711.2写入变数.11911.3目录.12111.4腌制.12211.5例外.12311.6术语.12612类别与对象.12812.1使用者设定的复合型态.12812.2属性.12912.3以实例作为自变量.13012.4相同性.130-5-12.5矩形.13212.6以实例作为传回值.13312.7物件是可变的.13312.8复制.13412.9术语.13613类别与函数.13713.1Time类别.13713.2纯函数.13713.3修饰子.13913.4哪一个比较好?
.14113.5原型开发V.S.计划.14113.6一般化.14213.7算法.14313.8术语.14314类别与方法.14514.1对象导向功能.14514.2printTime.14514.3另一个范例.14714.4一个更为复杂的范例.14814.5选择性自变量.14914.6初始化方法.15014.7重新审视Points.15214.8运算子多载.15314.9多形(Polymorphism).15414.10术语.156-I-贡献者名单为阐述自由软件基金会的哲学,这本书是自由的,就像自由言论(freespeech)一样,不过不一定像免费披萨(freepizza)一样免费。
本书经由合作产生,如果没有GNUFreeDocumentationLicense,这种类型的合作就不可能发生。
所以我们想要感谢自由软件基金会发展这个授权,而且让我们得以取用。
我们同时也想感谢一百多个眼睛锐利而且体贴的读者,他们在过去数年间传送给我们建议和修正。
依照自由软件的精神,我们决定用贡献者名单的形式表示我们的感谢。
可惜的是,这份名单并不完整,但我们会尽最大努力使其包含最新讯息。
如果要包含所有仅传送一两个错误的人员,这份名单会变得过于庞大。
你除了有我们的感谢,还得到了个人满足感,因为对你和所有使用本书的人来说,你让这本对你有用的书更完善了。
第二版名单新增的部分是那些目前仍做出贡献的人。
如果你有机会检视这份名单的话,你应该明暸这里的每个人仅借着通知我们,就让你和后面的读者不会因技术上的错误,或不甚清楚明白的解释而疑惑。
虽然经过这么多次修正后,似乎不太可能再出错,不过本书中可能仍有些错误。
如果你看到其中一个,我们希望你能花点时间联络我们。
电子邮件地址是:
。
如果因你的建议而做出实质改变,你将会被加入下一版本的贡献者名单中(除非你要求略去姓名)。
谢谢你!
0.1.1第二版第二版?
特别感谢Jeff2007-2008学年HB-Woodlawn课程中计算机科学班级的学生:
JamesCrowley、JoshuaEddy、EricLarson、BrianMcGrail和IlianaVazuka。
你们愿意作为新章节写好时的beta测试者,并忍受随着你们的响应而经常进行的修订,在在都证明是无价的。
也由于你们,这本书有真正由学生测试过的文字。
?
AmmarNabulsi送来了关于第一章和二章为数众多的修正。
?
AldricGiacomoni指出了第五章我们关于斐波纳契数列的一个错误。
?
RogerSperberg送来数个拼字修正,并指出第三章中一个逻辑混乱的段落。
-II-?
AdeleGoldberg在PyCon2007和Jeff坐下来谈了一会,并给了他一份关于整本书的建议和修正清单。
?
BenBruno送来关于第四、五、六和第七章的修正。
?
CarlLaCombe指出我们在第六章错用了commutative这个词,其实symmetric才是正确的词。
?
AlessandroMontanile送来在第三、十二、十五、十七、十八、十九和二十章中,程序范例和文字错误的修正。
?
EmanueleRusconi在第四、八和十五章找到错误。
?
MichaelVogt回报第六章中一个范例的缩排错误,并送来第一章关于shellvs.script一节的建议,以改善理解度。
0.1.2第一版第一版?
LloydHughAllen送来8.4节的一个修正。
?
YvonBoulianne送来第五章中一个语义错误的修正。
?
FredBremmer提交了一个2.1节的修正。
?
JonahCohen写了一个Perl脚本,将本书的LaTeX原始档转换成美丽的HTML码。
?
MichaelConlon送来第二章中一个文法修正,并改善第一章中的写作风格,另外他也发起了关于编译器技术观点的讨论。
?
BenoitGirard送来对于5.6节一个可笑错误的修正。
?
CourtneyGleason和KatherineSmith写了horsebet.py,它被用来当成本书早期版本中的实例探讨。
他们的程序现在可以在网站上找到。
?
LeeHarr所提交的错误多到我们这里的空间不足以一一列出,他其实应该被列为本文主要编辑之一。
?
JamesKaylin是个使用本文的学生。
他提交了许多修正。
?
DavidKershaw修好了3.10节中坏掉的catTwice函数。
?
EddieLam送来了许多关于第一、二和第三章的修正。
他同时也修好了Makefile,让它可以在第一次执行时,建立一个索引,并且帮助我们设定了版本管理系统。
?
Man-YongLee送来2.4节中范例程序代码的一个修正。
?
DavidMayo指出第一章中unconsciously这个字应该更正为subconsciously。
-III-?
ChrisMcAloon送来3.9和3.10节中的数个修正。
?
MatthewJ.Moelter是个长期贡献者,他送来对本书为数众多的修正和建议。
?
SimonDiconMontford回报了第三章中遗漏的函数定义和数个拼字错误。
他同时也找到了第十三章中increment函数中的错误。
?
JohnOuzts修正了第三章中returnvalue的定义。
?
KevinParks送来关于如何推广本书的评论和建议。
?
DavidPool送来第一章术语中的一个拼字错误,同时也用他亲切的文字鼓励我们。
?
MichaelSchmitt送来关于档案和例外章节的一个修正。
?
RobinShaw指出13.1节的一个错误,printTime函数被使用在范例中,却没有定义。
?
PaulSleigh发现了一个第七章中的错误,并且在JonahCohen从LaTeX生成HTML的Perl脚本中找到一个臭虫。
?
CraigT.Snydal在德鲁大学中的一个课程中测试本文。
他贡献了数个珍贵的建议和修正。
?
IanThomas和他的学生在一堂程序设计课程中使用本文。
他们是首批测试本书后半章节的人员,而且他们做出了为数众多的修正和建议。
?
KeithVerheyden送来一个关于第三章的修正。
?
PeterWinstanley让我们知道第三章中的拉丁文里一直存在的错误。
?
ChrisWrobel修改了档案I/O和例外章节中的程序代码。
?
MosheZadka对这个计划做出了无法估计的贡献。
除了撰写Dictionaries章节的初稿外,他还在本书的早期阶段提供了不间断的指导。
?
ChristophZwerschke送来数个修正和教学法上的建议,并解释了gleich和selbe之间的不同。
?
JamesMayer送来许多拼字和排版错误,包含贡献者名单中的两个。
?
HaydenMcAfee在两个范例间抓到了一个有可能导致迷惑的不一致之处。
?
AngelArnal是