没有合适的资源?快使用搜索试试~ 我知道了~
首页Python入门:计算机科学家视角与基础概念探索
Python入门:计算机科学家视角与基础概念探索
需积分: 10 2 下载量 7 浏览量
更新于2024-07-17
收藏 716KB PDF 举报
"《像计算机科学家那样思考》是一本Python编程入门教程,特别适合初学者,尤其强调了Python 2版本的学习。本书引导读者理解计算机科学的基本概念,如程序设计、错误类型(语法错误、运行时错误和语义错误)、以及编程语言的分类(形式语言和自然语言)。作者通过一步步的教学,让读者掌握变量、表达式、陈述的基础,包括数值与类型、变量命名规则、运算子与运算顺序等核心概念。 章节2介绍了变量、表达式和陈述,涵盖了变量的赋值、类型、命名规范,以及如何进行表达式的求值和组合。这部分内容是编程基础中的基石,对于理解后续章节至关重要。函数部分讲解了函数的定义、调用、参数传递和区域概念,同时引入了栈图的概念,帮助读者理解程序执行过程。 第4章深入探讨了条件式和逻辑控制,包括余数运算、布尔值、逻辑运算符、条件分支结构,以及键盘输入和类型转换。这些内容有助于构建复杂的决策逻辑,实现程序的分支处理。 第5章则转向多效函数,讨论了返回值、程序开发流程、函数组合以及布尔函数的概念。有型的程序设计和doctest单元测试的使用,进一步提升了代码的组织和测试效率。 在重复与循环部分,作者介绍了多重指派、变量更新、while循环,以及如何通过循环结构实现数据处理和算法迭代。这一部分展示了程序的重复执行和控制结构的重要性。 《像计算机科学家那样思考》中文版第二版是一本系统且实用的Python教学书籍,不仅教授基础知识,还注重培养读者的逻辑思维和问题解决能力,适合希望系统学习Python并理解计算机科学原理的读者。"
资源详情
资源推荐
- 1 -
1 程序之道
这本书的目标是要教你像计算机科学家一样思考。这样的思考方式结合数学、工程学及
自然科学一些最优良的特色。计算机科学家像数学家,使用形式语言表达概念(特别是在计
算方面)。他们也像工程师般设计东西,组合原件成系统,然后从中评估成本效益。他们还
像自然科学家一样,观察复杂系统的变化,提出假说,并且测试所预期的结果。
计算机科学家最重要的一项能力就是解决问题。解决问题的意思是指能够系统式地阐述
问题,思考解决方法时别具创意,并且清楚正确地表达解决方法。结果证明,学习程序设计
的过程是个练习问题解决技巧的绝佳机会。这也是为甚么这一章叫做:程序之道。
从一方面来说,你将学会设计程序这个有用的技巧。对另一方面而言,你将利用程序设
计作为工具,达成目标。随着我们的教学,这目标会越来越清楚。
1.1 Python 程序语言
你将学习程序语言是 Python。Python 是高级语言的一种,你可能听过的其它高级语言
有 C++、PHP 及 Java。
你可以从高级语言这个名字猜测到,也有所谓的低级语言,有时也称为机器语言或是汇
编语言。广义来说,计算机只能执行用低级语言写的程序。因此,用高级语言写的程序在执
行前必须先经过处理。这种额外的处理需要一些时间,这是高级语言的一个小缺点。
但其优点为数众多。首先,用高级语言撰写程序更容易。撰写高级语言程序所需的时间
更少,程序更短也更容易阅读,而且正确性更高。其次,高级语言是可移植的,这表示它可
以在经过些许修改后,运作在其它计算机架构上,有时甚至完全不需修改。低级语言程序只
能运作在特定种类的计算机上,并且必须重写,才能在其它的计算机上执行。
由于这些优点,几乎所有的程序都是由高级语言来写的。低级语言只用在一些专业应用
程序上。
有两种程序可以让高级语言转换成低级语言的,分别是直译器和编译器。直译器读取高
级语言程序并执行它,这意味着直译器直接执行程序的指示。它一次处理一点程序,交错地
读取程序代码和执行计算。
- 2 -
编译器则在程序开始执行前读取程序并将其完全翻译。在这种情况下,高级语言程序称
为原始码,编译后的程序则叫做目标码或是执行文件。一旦程序编译完成,你可以重复地执
行,而不需进一步翻译。
许多现代的语言同时使用两种程序。它们先编译到一种称为位码的较低级语言,然后使
用一个称为虚拟机器的程序直译。Python 同时使用两种程序,但因其与程序设计师互动的方
式,它通常被认为是一种直译式许言。
有两种方式使用 Python 直译器:shell
模式
及
脚本模式
。在 shell 模式下,你将 Python
陈述输入 Python shell 中,直译器会立刻印出结果来:
$ python
Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 1 + 1
2
这个例子的第一行,是在 Unix 命令提示符下启动 Python 直译器的命令。下三行是直
译器提供的讯息。第四行以 >>> 起始,这是 Python 提示符。直译器使用这个指示符表示它
已准备好接受指示。我们输入 print 1+1,直译器回应结果为 2。
另外,你也可以将程序写入一个档案中,然后利用直译器执行档案内容。这样的档案就
叫做脚本。例如,我们使用文字编辑器建立一个名为 firstprogram.py 档案,并包含下列内
容:
print 1 + 1
传统上,包含 Python 程序的档案有着以 .py 结尾的名称。
要执行这个程序,我们必须要告诉直译器脚本的名称:
$ python firstprogram.py
2
这些例子说明 Python 运作在 Unix 命令列的情形。在其它程序开发环境中,程序执行
的细节可能会不一样。另外,大多数的程序比这个例子有趣许多。
- 3 -
本书范例同时使用 Python 直译器和脚本。你将可以分辨该使用哪一种方式,因为 shell
模式范例永远以 Python 提示符起始。
在 shell 模式中工作可以方便测试简短的程序代码,因为你可以获得立即回馈。请将它
想成用来帮你找出问题答案的便条纸。任何长于数行的程序都应该放到脚本中。
1.2 程序是什么?
程序是一连串具体说明如何计算的指令。这种计算可能是数学的,像是找到方程组的解
或是多项式的根,也可能是一种象征性的计算,就像在文件中搜寻并取代文字,或(说来也
奇怪)编译一个程序。
不同程序语言的详细情况看起来都不一样,但有一些基本的指令,几乎在每种程序语言
中都可以发现:
输入:
从键盘、档案或是其它装置取得数据;
输出:
在屏幕上显示数据,或着是将数据传送到档案或是其它装置;
数学:
执行基本的数学运算,如加法和乘法;
条件执行:
检查特定条件,并执行适当的陈述序列;
重复:
反复执行某些动作,通常会有些变化。
不管你相信与否,就是这么多了。你曾使用过的每个程序,不论有多复杂,都由或多或
少类似的指令组成。因此,我们可以把程序设计当成是一种拆解的过程,将大型、复杂的任
务,逐步分离成愈来愈小的子任务,直到这些子任务简单到能使用这些基本指令执行为止。
这可能听起来有点糊,当我们稍后讨论到算法时会再回到这个主题。
1.3 除虫是什么?
程序设计是一个复杂的过程,而且因为是由人类完成,所以常导致错误。为了一些奇怪
的理由,程序设计的错误称为虫,而追踪这些虫,并修正的过程称为除虫。
- 4 -
程序里有三类可能发生的错误:句型错误、执行错误以及语意错误。为了更快速地追踪
它们,清楚分辨这三种错误是很有用的。
1.4 语法错误(Syntax errors)
Python 只能够执行语法正确的程序,否则程序就会执行失败,并传回错误讯息。语法就
是指程序的结构,以及结构的规则。举例来说,在英文中,句子一定是以大写字母起始,并
以句点为结束。下列例句就犯了英文的语法错误:「this sentence contains a syntax error.」。
此句亦有语法错误,「So does this one」。
对大多数读者来说,一些语法错误并不是个严重问题,这是为甚么我们读康明思(e. e.
cummings)的诗却不会吐出错误讯息。Python 则没有这么宽容。如果程序中任何地方有一个
语法错误,Python 会印出错误讯息并结束程序。你将无法执行你的程序。在你程设生涯中最
初的几个星期,你大概会花很多时间追踪语法错误。然而,当你的经验增长,你将犯较少错,
并能更快地找到错误。
1.5 执行错误(Runtime errors)
第二种类型的错误叫做执行错误,会这么命名是因为这种错误直到执行的时候才会出现。
这种错误也称为异常,因为它们通常表示某种异常(而且不好的)事情发生。
执行错误很少发生在头几章简单的程序里,所以你可能要等好一会才会遇到。
1.6 语意错误(Semantic errors)
第三种类型错误叫做语意错误。如果有语意错误在你的程序里,程序仍会顺利的执行,
因此计算机不会产生任何的错误讯息,但是程序不会做正确的事情。程序还是会执行另一些
事情,特别是你叫程序执行的事。
问题是你写的程序并非是你想要写的程序。程序的意义(它的语意)是错的。判定语意
错误可能是困难的,因为需要你检视程序的输出,并尝试找出程序正在执行的事,以回溯你
的工作。
1.7 实验性除虫
- 5 -
除虫是你会获得的重要技术之一。虽然除虫工作可能令人沮丧,它却是程序设计中最富
机智、最具挑战性以及最有趣的部份。
在某些方面,除虫就像侦探工作一样。你要依据得到的线索,推论出会导致所见结果的
程序与情况。
除虫也像是实验科学。一旦你知道什么出错了,你修改你的程序并且再测试一次。如果
你的假说是对的,你就可以预期修改的结果,并能更接近可以运作的程序。但如果你的假说
是错的,你就必须想出一个新的假说。就像夏洛克.福尔摩斯指出的:当你排除不可能的,
剩下的即使不太可能,那也必定是真相。(柯南.道尔,
四个人的签名
)
对有些人来说,程序设计与除虫是同一件事。也就是说,程序设计就是逐步除虫的过程,
直到程序执行你想要的事。这个概念是说,你应该以一个可执行
某件事
的程序开始,然后在
除虫的过程中进行些微修改,好让你永远有个可运作的程序。
举例来说,Linux 是个包含着数千行程序代码的操作系统,但是它最初只是个 Linus
Torvalds 用来探索 Intel 80386 芯片的简单程序。依据 Larry Greenfield 所说,Linus 早期的
计划是个将屏幕印出的 AAAA 变成 BBBB 的程序。这个程序稍后演变成为 Linux。(The
Linux Users' Guide Beta Version 1)
往后的章节会提供更多除虫及其它程设实务的建议。
1.8 形式语言及自然语言
自然语言是人们所讲的语言,如英语、西班牙语和法语。它们并非是由人所设计的(虽
然人们尝试将某种规则套用在它们上面),而是自然演变而成。
形式语言是人们为特定应用所设计的语言。举例来说,数学家所使用的标记法就是一种
形式语言,这种语言特别适合表示数字与符号间的关系。化学家也使用一种形式语言表现分
子的化学结构。最重要的是:
程序语言是设计来呈现计算的形式语言。
形式语言对于语法有严格的规则。例如,3+3=6 是一个语法正确的数学陈述,但 3=+6$
不是。H
2
O 是语意正确的化学名称,而
2
Zz 则否。
语法规则分为两种,分别属于 标记与结构。标记是程序语言的基本组件,就像字词、数
字和化学元素等。3=+6$ 的问题之一是 $ 并非数学的正确标记(至少就我们所知道的来说)。
同样的,
2
Zz 也不正确,因为没有一种元素的缩写是 Zz。
剩余171页未读,继续阅读
catgray
- 粉丝: 15
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功