本书全面覆盖了Python编程语言的基础知识,侧重于物理建模。对于本科生和以前从未接触过编程的人而言,本书提供了非常有用的Python入门。
为了清晰地阐述新的知识点,本书提供了丰富的代码例子和练习,并给出了相应的解答。本书的示例代码和数据集,可以从www.epubit.com.cn下载。
如何使用本书?
最好将本书的纸质版放在计算机旁,其他可看电子书的设备,例如平板电脑也可。当然也可用运行Python的同一台电脑查看电子书。
本书将频繁地要求读者去尝试操作。其中的一些操作涉及文本形式的代码段。读者可以从code_samples.txt文件中复制并粘贴代码到自己的Python会话中,查看输出,并更改和操作代码。
读者也可交互地访问代码段。上面给出的Web站点还提供了访问每个代码例子的链接。可从Web页面复制和粘贴代码到Python中。
对物理系统建模或许会是一项十分复杂的任务。下面让我们了解一下功能强大的计算机处理器是如何为此提供帮助的。
1.1.1 算法思想
假设你需要指导一位朋友完成倒车入位操作。当时是一个紧急情况,必须由你这位从未开过车的朋友完成操作,开始操作前,你们之间只能通过电话联系。
你需要将操作分解为可被你的朋友能理解的小步骤,这些小步骤应是明确的,依次执行即可完成任务。例如,你可给出如下一系列指令:
1 将车钥匙插入点火器。2 转动钥匙直至启动,然后松开钥匙。3 按下变速杆上的按钮,将变速挂入“倒车”标识的档位。4 ……
遗憾的是,即使你的朋友理解了每条指令,该“代码”对一些车辆并不起作用。这个过程有“程序故障”。在做第3步指令前,不少车辆需要驾驶者:
此外,变速器上的倒车档可能是用“R”标记的,而非“倒车”。创建这样的操作指令时,难以做到一开始就习惯操作所需的高精确度。
因为指令是预先给出的(假定你的朋友没有手机),所以好的做法是允许存在意外情况:
这就是算法思想的开端,将长的操作步骤分解为小的、清晰的子步骤,以及预期中的意外情况。
如果你的朋友见过别人驾车,并已有了大量的经验,那么上述指令足以适用。但是对于另外一些没有任何经验的朋友,甚至是机器人,需要提供更多的细节。例如,最初两步指令可能需要进行如下扩展:
握住钥匙的大头端。将钥匙的另一端插入位于驾驶杆右下方的钥匙孔内。按顺时针方向扭动钥匙(从钥匙的大头端向对端的角度看)。……
命令行解释器,连同标准函数库和你自己编写的程序,一起提供了便利的、强大的科学计算平台。
1.1.2 状态
1.1.3 “a=a+1”是什么意思
这在数学中是不合理的。第二行是一个永假断言,相应地也是一个无解的等式。但是对于Python而言,“=”并非是测试相等性,而是一个需要执行的指令。上面两行命令的大概意思为[2]:
2.提取命名对象a的值,并与1做求和运算,然后将运算结果赋于a,并抛弃a所指代对象的原始值。
我们往往希望能确定一个变量是否具有特定的值。为避免赋值和等价测试间的模糊性,Python以及其他很多语言都对后者使用双等号“==”。例如:
注意:不要在应该使用“==”(等价测试)的地方使用“=”(赋值)。
这是编程新手常犯的一个错误。因为“=”和“==”都是合法的Python语法,这个错误会产生无法预料的结果。但是无论在何种情况下,“=”和“==”两者中只会有一个是你所需要的。
1.1.4 符号和数字的对比
在不知道a值的情况下使用“假定b=a2-a”进行减法运算,这在数学上是完全合理的。该语句将会根据a定义b,无论a的值是什么。
与此相对比,Python这样的数学系统在执行赋值语句“b=a**2-a”后,并不会记住b和a之间的关系,它所记住的只是赋给b的值。如果我们随后更改了a的值,b的值并不会发生变化[5]。
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光。