在开始前必须明确,本课程在不说明的情况下所有的程序运行均在 manjaro for wsl2 下执行,一些不涉及大型项目的操作与作业程序也均在上述操作系统下进行
1.0.导论
在学习这个课程之前,建议先修课程
为了定义计算过程,我们需要一种被人们广泛使用和各类电脑广泛接受的编程语言,在本课程中,我们将主要使用 Python 语言。
因为这一门课程都会使用Python作为编程语言,所以必须好好配置我们的编程环境
我这里选择 Visual Studio Code + wsl2 进行编写代码
由于Linux的原因,我们可以非常轻松的配置环境,所以我们不必要纠结过多在环境配置与下载上
1.1.开始
1.1.1 交互式会话
要启动python的交互式会话,我们可以在终端中输入 python
如何你看到这样的提示说明你已经进入
Python 3.13.5 (main, Jun 21 2025, 09:35:00) [GCC 15.1.1 20250425] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
我们可以输入一些示例来展示
>>> 2 + 2
4
在交互式会话中,我们可以使用方向键上下控制输入的历史记录
第一个例子
Note
课程中的Python脚本几乎都是使用交互语言书写的,但是在课程中我们会结合文件式的编程一起结合来看
from urllib.request import urlopen
shakespeare = urlopen('https://www.composingprograms.com/shakespeare.txt')
words = set(shakespeare.read().decode().split())
# 这是一个从互联网上下载莎士比亚的文本文件,并将其中的单词存储在一个集合中的代码。
for w in words :
if len(w) == 6 and w[0] == 'a' and w[-1] == 'e':
print(w)
我们用多种语言特性来介绍 Python ,我们可以将这一章看作是即将到来的功能的一个预览,在下一节课我们从头开始逐步了解整个语言
py内置了一些常见的编程功能,例如处理文本,显示图像以及通过互联网进行通讯
>>> form urllib.request import urlopen
这是一个 improt
语句,会导入一个 “访问互联网” 的功能,这个功能提供了一个函数 urlopen
可以访问到某个网址上的内容
语句与表达式
Python代码由表达式和语句构成,进一步的:计算机程序由以下指令组成:
- 计算一些值
- 执行一些操作
这些语句通常会描述操作,Python解释器每执行一条语句,计算机就会执行相应的操作,这也是Python与C++的不同之处
下面的赋值语句
>>> shakespeare = urlopen('https://www.composingprograms.com/shakespeare.txt')
将 shakespeare
用 =
与后面一大串东西链接在一起,代表后面函数的返回值将被赋值给前面的变量,这个数据的转化可能会很复杂,但我们不需要关心这些,我们只需要理解函数的转化
函数:封装一系列操作数据的逻辑。在例子中 urlopen
就是一个函数,封装了将 网址数据 → 文字数据 这一系列的操作
另外一个赋值语句
>>> words = set(shakespeare.read().decode().split())
这个语句将 words
与 莎士比亚剧本中33721个单词的集合相连,其命令链条调用了 read,decode,split
,每个函数都会操作一个中间的计算实体:
从 URL 中
read
(读取)数据,然后将数据decode
(解码)为文本,最后将文本split
(拆分)为单词放在一个set
中
对象: set
就是一种对象,支持如交集并集之类的集合运算。对象整合了数据以及操作这个数据的逻辑,并且隐藏了两者的复杂性
最后这个表达式:
>>> {w for w in words if len(w) == 6 and w[::-1] in words}
{'redder', 'drawer', 'reward', 'diaper', 'repaid'}
是一个符合表达式,这个计算结果是反转后也为莎士比亚单词里的单词的集合表达式。神秘符号 w[::-1]
表示反向枚举w的每一个字母
最后,我们会发现所有这些核心概念都是紧密相关的:函数是对象,对象是函数,解释器是二者的实例。但是,清楚地理解每一个概念及其在组织代码中的作用对于掌握编程艺术至关重要
1.2.错误
与所有编程语言一样,哪怕是出现一个单词的拼写错误也会导致整个程序的错误与失效
我们必须学习一些解释错误和找到错误的技巧,我们称之为 调试
关于调试的一些指导性原则
- 增量测试
- 隔离错误
- 检查我们的假设
- 咨询他人