@@ -14,10 +14,22 @@
|
||||
|
||||
## 学习目标
|
||||
|
||||
在这一部分我们要学习的内容主要是函数(Functions)和控制(Control)
|
||||
在这一部分我们要学习的内容主要是函数(Functions)
|
||||
|
||||
### 一个简单的例子
|
||||
|
||||
::: warning A Midsummer-Night's Dream:
|
||||
And, as imagination bodies forth
|
||||
|
||||
The forms of things to unknown, and the poet's pen
|
||||
|
||||
Turns them to shapes, and gives to airy nothing
|
||||
|
||||
A local habitation and a name.
|
||||
|
||||
—William Shakespeare
|
||||
:::
|
||||
|
||||
为了给 Python 一个适当的介绍,我们将从一个使用几种语言特征的例子开始。
|
||||
|
||||
Python 内置了对广泛的常见编程的支持,如操作文本、显示图形和通过互联网进行通信。
|
||||
@@ -101,7 +113,7 @@ words = set(shakespeare.read().decode().split())
|
||||
|
||||
解释器的设计和实现也是我们之后的主要议题。
|
||||
|
||||
### 编程原本
|
||||
### 编程要素
|
||||
|
||||
编程语言不仅仅是指示计算机执行任务的一种手段,同时也是一个框架,我们在这个框架内组织我们关于计算过程的想法。程序的作用是在编程社区的成员之间交流这些想法,所以,编写的程序必须让人们容易阅读,而且只是顺便让机器执行。
|
||||
|
||||
@@ -133,7 +145,7 @@ words = set(shakespeare.read().decode().split())
|
||||
0.9921875
|
||||
```
|
||||
|
||||
这些数学表达式使用*中缀*符号,其中*运算符*(例如,+,-,*,或/)出现在*操作数*(数字)之间。Python 包括许多形成复合表达式的方法。我们不会试图立即列举它们,而是会随着我们的学习引入新的表达形式,以及它们所支持的语言特性。
|
||||
这些数学表达式使用*中缀*符号,其中*运算符*(例如,+,-,\*,或/)出现在*操作数*(数字)之间。Python 包括许多形成复合表达式的方法。我们不会试图立即列举它们,而是会随着我们的学习引入新的表达形式,以及它们所支持的语言特性。
|
||||
|
||||
最重要的一种复合表达式是*调用表达式*,它将一个函数应用于一些参数。回顾一下代数,函数的数学概念是一个从一些自变量到因变量的映射。例如,一个求最大值的函数将其的多个输入映射到当中最大值的一个单一的输出。Python 表达函数应用的方式与传统数学中相同。
|
||||
|
||||
@@ -415,6 +427,37 @@ None
|
||||
|
||||
出于这些问题的考虑,我们将在下一章节中着重讨论创建和使用纯函数。`print`函数的使用只是为了让我们看到计算的中间结果。
|
||||
|
||||
### 错误和调试
|
||||
|
||||
Python 正在等待你的命令。我们鼓励你尝试该语言,即使你可能还不知道它的全部语法和结构。但是,请做好应对错误准备。虽然计算机非常快速和灵活,但它们也非常僵化。计算机的本质在[斯坦福大学的入门课程](http://web.stanford.edu/class/cs101/code-1-introduction.html)中被描述为
|
||||
|
||||
::: warning The fundamental equation of computers is:
|
||||
**computer = powerful + stupid**
|
||||
|
||||
Coputers are very powerful, looking at volumes of data very quickly. Computers can perform billions of operations per second, where each operation is pretty simple.
|
||||
|
||||
Computers are also shockingly stupid and fragile. The operations that they can do are extremely rigid, simple, and mechanical. The computer lacks anything like real insight ... it's nothing like the HAL 9000 from the movies. If nothing else, you should not be intimidated by the computer as if it's some sort of brain. It's very mechanical underneath it all.
|
||||
|
||||
Programming is about a person using their real insight to build something useful, constructed out of these teeny, simple little operations that the computer can do.
|
||||
|
||||
—Francisco Cai and Nick Parlante, Stanford CS101
|
||||
:::
|
||||
|
||||
当你尝试使用 Python 解释器时,计算机的僵化将立即变得明显:即使是最小的拼写和格式更改也会导致意外的输出和错误。
|
||||
|
||||
学习解释错误和诊断意外错误的原因称为调试。调试的一些指导原则是:
|
||||
|
||||
1. **逐步测试**:
|
||||
每个编写良好的程序都由可以单独测试的小型模块化组件组成。尽快尝试测试你编写的所有内容,以便及早发现问题并获得对组件的信心。
|
||||
2. **隔离错误**:
|
||||
语句输出中的错误通常可归因于特定的模块化组件。尝试诊断问题时,请在尝试更正错误之前将错误跟踪到最小的代码片段。
|
||||
3. **检查假设**:
|
||||
解释器会完全执行你的指示 —— 不会多也不会少。当某些代码的行为与程序员认为(或假设)的结果不匹配时,那么输出就是出乎意料的。重新检查你的假设,然后将调试工作集中在验证你的假设是否确实成立上。
|
||||
4. **咨询他人**:
|
||||
你并不孤单!如果你不理解错误消息,请咨询朋友、教师或搜索引擎。如果你已隔离出错误,但无法弄清楚如何纠正它,请让其他人查看。在小组解决问题的过程中,许多有价值的编程知识会被分享。
|
||||
|
||||
逐步测试、模块化设计、精确的假设和团队合作是贯穿本文的主题。希望它们也能贯穿你的计算机科学生涯。
|
||||
|
||||
## 课后作业
|
||||
|
||||
一个好的课程怎么能少得了精心准备的课后作业呢?🤗
|
||||
|
||||
Reference in New Issue
Block a user