Python的非程序员教程3
你应该知道的内容
读完并掌握这一章后,你应该知道如何在文本编辑器或 IDLE 中编辑程序,如何将它们保存到硬盘,并在保存后运行它们。
打印输出
从编程教程开始,几乎所有教程都会以一个叫做“Hello, World!”的小程序作为起点。所以,这里就是它:
print("Hello, World!")
如果你是在命令行中运行程序,可以通过文本编辑器输入这个程序,将其保存为 hello.py
,然后运行命令:
python3 hello.py
否则,你可以进入 IDLE,创建一个新窗口,按照“创建和运行程序”部分的步骤来编写程序。
运行该程序时,输出如下:
Hello, World!
我并不会每次都说这个,但当我展示一个程序时,我建议你自己输入并运行它,而不是复制粘贴。通常我自己输入程序时,能更好地理解和吸收学习内容,你可能也会有同样的体会!
现在,这里有一个更复杂的程序:
print("Jack and Jill went up a hill")
print("to fetch a pail of water;")
print("Jack fell down, and broke his crown,")
print("and Jill came tumbling after.")
当你运行这个程序时,输出会是:
Jack and Jill went up a hill
to fetch a pail of water;
Jack fell down, and broke his crown,
and Jill came tumbling after.
当计算机运行这个程序时,它首先看到这一行:
print("Jack and Jill went up a hill")
因此,计算机输出:
Jack and Jill went up a hill
然后,计算机会继续执行下一行:
print("to fetch a pail of water;")
计算机会输出:
to fetch a pail of water;
计算机继续执行每一行,直到程序结束。
术语
现在可能是时候给你一些解释了——并且介绍一些编程术语。
上面我们使用的是一个叫做 print
的函数。函数的名称(print
)后面跟着括号,括号中可以包含零个或多个参数。所以,在这个例子中:
print("Hello, World!")
只有一个参数,即 "Hello,
World!"
。注意,这个参数是由双引号包围的一组字符。这个字符组通常被称为字符串(string)。另一个字符串的例子是 "Jack and Jill went up a hill"
。函数和其参数的组合叫做“函数调用”(function call)。
函数及其参数是 Python 中的一种语句,因此:
print("Hello, World!")
就是一个语句。基本上,你可以把语句理解为程序中的一行代码。
现在这些术语可能已经足够了。
打印中的 \n
\n
,即换行符,用来使得紧跟在 \n
后的字符串出现在新的一行,它也是一个转义字符,下面是一个例子:
print("Hello, World!\nWhat should I do?")
输出是:
Hello, World!
What should I do?
它可以用来将多个本应分成不同行的字符串放入一个 print
语句中,而不必使用多个 print
语句。
即使你不显式地使用 \n
,print
语句也会“默默地”使用它。例如:
print("Hello, World!")
实际上等同于:
print("Hello, World!\n")
虽然手动添加与不添加有所不同,但 Python 会在字符串的末尾自动加上换行符。
表达式
这里是另一个程序:
print("2 + 2 is", 2 + 2)
print("3 * 4 is", 3 * 4)
print("100 - 1 is", 100 - 1)
print("(33 + 2) / 5 + 11.5 is", (33 + 2) / 5 + 11.5)
运行这个程序时,输出是:
2 + 2 is 4
3 * 4 is 12
100 - 1 is 99
(33 + 2) / 5 + 11.5 is 18.5
正如你所看到的,Python 能把你的几千美元的计算机变成一个五美元的计算器。
算术表达式
在这个例子中,print
函数后跟着两个参数,且每个参数之间用逗号隔开。比如在程序的第一行:
print("2 + 2 is", 2 + 2)
第一个参数是字符串 "2 + 2 is"
,第二个参数是算术表达式 2 + 2
,它是表达式的一种类型。
需要注意的是,字符串会按原样打印(不包括双引号),而表达式会被计算,或者说它会被转换为其实际值。
Python 支持七种基本的数字运算:
操作 | 符号 | 示例 |
---|---|---|
幂运算(指数) | ** |
5 ** 2 == 25 |
乘法 | * |
2 * 3 == 6 |
除法 | / |
14 / 3 == 4.666666 |
整数除法 | // |
14 // 3 == 4 |
取余(模运算) | % |
14 % 3 == 2 |
加法 | + |
1 + 2 == 3 |
减法 | - |
4 - 3 == 1 |
请注意,除法有两种方式,一种返回循环小数,另一种可以返回余数和商。运算的优先级与数学中的顺序相同:
- 括号
()
- 幂运算
**
- 乘法
*
、除法/
、整数除法//
、取余%
- 加法
+
和减法-
因此,在需要时使用括号来组织公式。
Python 中的注释
在编程过程中,很多时候你会做一些复杂的操作,以后可能记不住当时是怎么做的。当发生这种情况时,程序应该加上注释。注释是给你自己和其他程序员看的说明,解释程序发生了什么。例如:
# 不完全是 PI,但这是一个合理的模拟
print(22 / 7)
输出是:
3.14285714286
注意,注释以 #
开头,注释用于与你自己和其他读程序的人沟通,尤其是帮助你未来理解代码。
需要注意的是,注释后的任何文本都不会被程序执行,当程序运行时,#
后面的内容会被忽略。注释不一定要在新的一行开始:
# 输出 PI
print(22 / 7) # 其实只是一个不错的近似值
示例
每章(最终)都会包含示例程序,展示本章介绍的编程特性。你至少应该浏览它们,看看是否理解它们。如果不理解,你可以尝试自己输入并观察结果。动手修改它们,看看会发生什么。
Denmark.py
print("Something's rotten in the state of Denmark.")
print(" -- Shakespeare")
输出:
Something's rotten in the state of Denmark.
-- Shakespeare
School.py
# 这在美国以外的地方不完全准确
# 这只是我年轻时的模糊记忆
print("Firstish Grade")
print("1 + 1 =", 1 + 1)
print("2 + 4 =", 2 + 4)
print("5 - 2 =", 5 - 2)
print()
print("Thirdish Grade")
print("243 - 23 =", 243 - 23)
print("12 * 4 =", 12 * 4)
print("12 / 3 =", 12 / 3)
print("13 / 3 =", 13 // 3, "R", 13 % 3)
print()
print("Junior High")
print("123.56 - 62.12 =", 123.56 - 62.12)
print("(4 + 3) * 2 =", (4 + 3) * 2)
print("4 + 3 * 2 =", 4 + 3 * 2)
print("3 ** 2 =", 3 ** 2)
输出:
Firstish Grade
1 + 1 = 2
2 + 4 = 6
5 - 2 = 3
Thirdish Grade
243 - 23 = 220
12 * 4 = 48
12 /
3 = 4 13 / 3 = 4 R 1
Junior High 123.56 - 62.12 = 61.44 (4 + 3) * 2 = 14 4 + 3 * 2 = 10 3 ** 2 = 9