
1.2 小程序
所有这些概念你都会在计算机程序中看到,这些程序就像一门小语言,专门用来让人类告诉计算机要做什么。我使用针织图案和食谱来表明编程并非那么高深莫测,基本上就是学习正确的单词和规则罢了。
如果没有太多的单词和规则,而且不需要一次学那么多,那就容易多了。毕竟我们一次能记住的东西是有限的。
来看一个真正的计算机程序,如例1-1所示,你知道它在做什么吗?
例1-1 countdown.py
for countdown in 5, 4, 3, 2, 1, "hey!": print(countdown)
如果猜到这是一个打印出下列内容的Python程序:
5 4 3 2 1 hey!
那你就会明白Python学起来要比食谱和针织图案容易多了。而且,你可以在桌子上既舒服又安全地编写Python程序,远离被热水烫到和被编织棒扎到的风险。
Python程序有一些特殊的单词和符号:for、in、print、逗号、冒号、圆括号等。它们都是该语言语法(规则)的重要组成部分。好消息是,Python的语法非常漂亮,相较于大多数编程语言,记忆难度更小,而且看起来也更自然,几乎就像一份食谱。
例1-2是另一个微型Python程序,它会从Python列表中挑选哈利•波特的一条咒语并打印出来。
例1-2 spells.py
spells = [ "Riddikulus!", "Wingardium Leviosa!", "Avada Kedavra!", "Expecto Patronum!", "Nox!", "Lumos!", ] print(spells[3])
每条咒语都是Python字符串(出现在引号内的文本字符序列),它们彼此之间以逗号分隔,包含在由一对闭合方括号([和])定义的Python列表中。单词spells是一个变量,它为列表赋予了名称,以便对其进行操作。在这个例子中,程序会打印出第4条咒语:
Expecto Patronum!
明明是第4条,为什么要写成3 ?Python列表(如spells)是值的序列,按照从列表起始位置的偏移量来访问其中的值。第一个值的偏移量为0,第4个值的偏移量为3。
因为人们通常是从1开始计数的,所以从0开始计数看起来有些怪异。从偏移量而非位置的角度来思考会有所帮助。没错,这就是计算机程序有时候不同于常见语言用法的一个例子。
列表是Python中相当常见的数据结构,第7章会展示其用法。
例1-3中的程序会打印出《三个臭皮匠》(The Three Stooges)中一位主角的台词,不过是按照人名而非列表中的位置引用的。
例1-3 quotes.py
quotes = { "Moe": "A wise guy, huh?", "Larry": "Ow!", "Curly": "Nyuk nyuk!", } stooge = "Curly" print(stooge, "says:", quotes[stooge])
运行这个小程序会输出以下内容:
Curly says: Nyuk nyuk!
quotes是一个Python 字典变量。字典是一系列不重复的键(在本例中是主角的名字)及其关联值(在本例中是主角的台词)的集合。利用字典,你可以按照名称存储和查找数据,这通常是列表的有益替代。
spells的例子使用方括号([和])创建Python列表,quotes的例子使用花括号({和},这跟Curly可没什么关系2)创建Python字典。另外,冒号(:)用于关联字典中的键与值。
2花括号的英文(curly bracket)正好和《三个臭皮匠》中主角之一Curly的名字一样。——译者注
第8章会详细介绍字典。
乍一看也没有太多的语法,希望如此吧。在接下来的几章中,你会逐渐碰到更多的小规则。