本书内容
当浏览本书的项目时,你会了解一些非常有价值的Python库和模块,也会学到一些快捷键的使用方法、常用的内置函数以及一些重要的技术,还能从实践中学到程序设计、测试以及优化的方法。此外,你还会将正在做的事情与实际的应用程序开发、数据库设计和解决实际问题联系起来。
拉夫尔·沃尔多·艾默生说过:“没有热情就无法建立伟业。”学习的过程也是如此。本书的最终目的是激发你的想象力,并引导你开发自己感兴趣的项目。若一开始你觉得开发自己的项目过于雄心勃勃,那也不用担心。你只需要勤奋一点,经常上网搜索资料并学习,就能创造奇迹,这比你想象中更快。
下面是本书各章内容的简要描述。一般来说,你不必按照顺序阅读它们,但越是在前面的项目,往往会越简单,当新的概念、模块和技术首次出现时,本书会详细地解释它们。
第1章 虚假姓名生成器:这是一个热身项目。本章先介绍Python的PEP 8标准、PEP 257标准、Pylint模块和pydocstyle模块。这些标准和模块会帮助你分析代码是否符合编程规范。本章最后会给出一个奇怪姓名生成器程序,它的设计灵感来源于美国网络电视节目《灵异妙探》。
第2章 寻找回文:本章教你对代码进行性能分析。与此同时,你还会学到拯救挣扎在痛苦边缘的DC漫画中的女巫萨塔娜的方法。通过在线字典来寻找神奇的回文串,你可以帮助萨塔娜打败时间反转恶鬼。
第3章 寻找易位词:编写一个帮助用户创建他们输入名字的易位词的程序。例如,用“Clint Eastwood”生成“old west action”;然后,利用语言筛查器帮助汤姆· 马沃洛· 里德尔(Tom Marvolo Riddle)找到他名字的易位词——“I am Lord Voldemort”。
第4章 破解美国内战密码:首先,研究并破解历史上经典的军事密码——联邦路由密码;然后,让双方的间谍使用锯齿形栅栏密码发送和译码秘密信息。
第5章 编写英国内战密码:通过破解来自英国内战时期的空密码,获取明文隐含的深层次信息;之后,设计和实现更复杂的空密码以完成拯救苏格兰女王玛丽的任务。
第6章 隐写术:利用隐形电子墨水帮助企业间谍欺骗夏洛克·福尔摩斯的父亲,从而让间谍逃过侦察。本章的内容改编自美国哥伦比亚广播公司的电视剧《基本演绎法》。
第7章 用遗传算法培育大鼠:受达尔文进化论的启发,本章利用遗传算法模拟培育一种体型如雌性牛头獒一样的超级大鼠;然后,帮助詹姆斯·邦德在一眨眼的时间里破解密码有100亿种组合的保险柜。
第8章 统计俳句音节数:本章教你使用计算机统计英语单词的音节数,是下一章写作日本诗歌或俳句的先导部分。
第9章 用马尔可夫链分析技术编写俳句:本章将第8章的音节计数模块与马尔可夫链算法进行组合,通过分析含有数百个古今俳句的语料库,实现让计算机编写俳句的目标。
第10章 我们孤独吗——探索费米悖论:利用德雷克方程、银河系的大小以及假设的可探测“辐射气泡”大小,研究外星无线电信号缺失的原因;学习和使用流行的Tkinter模块,构建星系和地球自身的无线电气泡图。
第11章 蒙蒂·霍尔问题:首先论证蒙蒂·霍尔问题,然后使用面向对象编程语言构建一个有趣的、带有图形界面接口的蒙蒂霍尔游戏。
第12章 储蓄安全:使用蒙特卡罗金融模型为你自己(或你的父母)安排安稳的退休生活。
第13章 模拟外星火山:利用pygame模块模拟木星卫星艾奥上的火山爆发场景。
第14章 用探测器绘制火星地图:本章的目标是构建一款基于重力的街机游戏。当卫星燃料没有耗尽,也没有在大气层中燃烧时,让卫星的运行轨道变成一个圆形的测绘轨道。通过显示卫星的关键参数,跟踪其运行轨迹,为火星添加阴影图示,并让火星缓慢绕其轴旋转,以此来学习轨道力学知识。
第15章 用行星叠加技术完善天体摄影图片:利用Python的图像库,对从视频中获取的低质量图像进行光学叠加,从而显现木星的云带和大红斑效果;利用Python内置的os模块和shutil模块,学习解决文件、文件夹和目录路径等问题。
本书每章的末尾都至少包含一个实践项目或挑战项目。在本书的配套资源或附录中,你可以找到每个实践项目的答案。但这并不意味着这个答案就是最好的——你可能会想出一个更好的答案,所以在此之前不要偷看答案!
然而,对于挑战项目,你只能靠自己。1519年,当科尔特斯入侵墨西哥时,他将帆船烧掉,让追随他的士兵意识到他们没有回头路,于是他们不得不以坚定的决心面对阿兹特克人。因此,短语“burn your boat”(破釜沉舟)成为全心全意或全身心投入一项任务的代名词。这也是你面对挑战项目时应有的态度,如果你这样做了,那么你从这些练习中学到的东西可能会比从书中其他部分学到的东西都要多!