首页 > 软件开发 > 其他综合 > 正文
概述
2015-12-09 15:22:45     我来说两句      
收藏    我要投稿

我们从一个小谜题以及它的答案开始。你认为下面这两行的含义是什么?

(Row 1): (RS) K18,ssk,k1,turn work.

(Row 2): (WS) Sl 1 pwise,p5,p2tog,p1,turn.

它们看起来像是某种计算机程序。实际上,这是一个针织图案。更准确地说,这两行描述的是如何编织袜子的足跟部分。对我来说,看懂它们就像让猫看懂《纽约时报》上的填字游戏一样难,但是对我妻子来说却轻而易举。如果你也懂编织,一样可以轻松看懂。来看另一个例子。虽然你不知道最终会做出什么,但是马上就能明白下面的内容是什么。

1/2杯黄油或者人造黄油

1/2杯奶油

2.5杯面粉

1茶匙盐

1汤匙糖

4杯糊状土豆(冷藏)

确保在加入面粉之前冷藏所有材料。

混合所有材料。

用力揉。

揉成20个球并冷藏。

对于每一个球:

在布上洒上面粉。

用擀面杖把球擀成圆饼。

入锅,炸至棕色。

翻面继续炸。

即使你不会做饭,应该也能看懂这是一个菜谱:一系列食物原料以及准备工作。这道菜是什么呢?是lefse,一道和玉米饼很像的挪威美食。做好之后抹上黄油、果酱或者其他你喜欢吃的东西,最后卷起来吃。

编织图案和菜谱有一些共同的特征。

专有名词、缩写以及符号。有些很常见,有些很难懂。

规定专有名词、缩写以及符号的使用方法,也就是它们的语法。

一个操作序列,按照顺序进行。

有时需要重复一些操作(循环),比如炸lefse 的每一面。

有时需要引用其他操作序列(用计算机术语来说就是一个函数)。在菜谱中,你可能需要引用另一个将土豆捣成糊状的菜谱。

假定已经有相关知识。菜谱假定你知道水是什么以及如何烧水。编织图案假定你学过编织并且不会经常扎到手。

一个期望的结果。在我们的例子中分别是袜子和食物,千万不要把它们混在一起哦。

以上这些概念都会出现在计算机程序中。这两个例子的目的是让你知道编程并不像看起来那么高深莫测,其实只是学习一些正确的单词和规则而已。

下面来看看真正的程序。你知道它在做什么吗?

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 的语法非常优秀,相比其他大多数编程语言,学习Python 需要记住的语法内容很少。Python 语法非常自然,就像一份菜谱一样。

下面的Python 程序会从一个Python 列表(list)中选出一条电视新闻的常用语并打印出来:

cliches = [

"At the end of the day",

"Having said that",

"The fact of the matter is",

"Be that as it may",

"The bottom line is",

"If you will",

]

print(cliches[3])

程序会打印出第四条常用语:

Be that as it may

一个Python 列表,比如cliches,就是一个值序列,可以通过它们相对于列表起始位置的偏移量来访问。第一个值的偏移量是0,第四个值的偏移量是3。

人们通常从1 开始数数,所以从0 开始数似乎很奇怪。用偏移量来代替位置会更好理解一些。

列表在Python 中很常用,第3 章会讲解列表的用法。下面这段程序同样会打印出一条引用内容,但是这次是用说话者的人名而不是列表中的位置来进行访问:

quotes = {

"Moe": "A wise guy, huh?",

"Larry": "Ow!",

"Curly": "Nyuk nyuk!",

}

stooge = "Curly"

print(stooge, "says:", quotes[stooge])

运行这个小程序会打印出:

Curly says: Nyuk nyuk!

quotes 是一个Python 字典。字典是一个集合,包含唯一键(本例中是跟屁虫“Stooge”的名字)及其关联的值(本例中是跟屁虫说的话)。使用字典可以通过名字来存储和查找东西,和列表一样非常有用。第3 章会详细讲解字典。

常用语的例子中使用方括号([ 和])来创建Python 列表,跟屁虫的例子中使用大括号({ 和},大括号的英文是curly bracket,但是大括号和Curly 没有任何关系1)来创建Python字典。这些都是Python 的语法,在之后的内容中你会看到更多语法。

现在我们来看另一个完全不同的例子:示例1-1 中的Python 程序会执行一系列复杂的任务。你可能还看不懂这段程序,没关系,学完本书之后就可以看懂了。这个例子的目的是让你了解典型的Python 程序长什么样。如果你了解其他计算机语言,可以对比一下。

示例1-1 会连接YouTube 网站并获取当前评价最高的视频的信息。如果YouTube 返回的是常见的HTML 文本,那就很难从中挖掘出我们想要的信息(9.3.4 节会介绍网页抓取)。幸运的是,它返回的是JSON 格式的数据,这种格式可以直接用计算机处理。JSON(JavaScript Object Notation,JavaScript 对象符号)是一种人类可以阅读的文本格式,它描述了类型、值以及值的顺序。JSON 就像一个小型编程语言,使用JSON 在不同计算机语言和系统之间交换数据已经成为了一种非常流行的方式。更多关于JSON 的内容请参考8.2.4 节。

----注1:Curly 是美国乌鸦童子军(Crow Scouts)的一员,乌鸦童子军是美国和印第安人打仗时由印第安人战俘组成的军队。Curly 是小巨角河战役中为数不多的幸存者之一。小巨角河战役是美军和北美势力最庞大的苏族印地安人之间的战争,在这场战争中印第安人歼灭了美国历史上最有名的第七骑兵团,Curly 当时没有参战,他是第一个报告第七骑兵团战败的人,也因此出名。——译者注

Python 程序可以把JSON 文本翻译成Python 的数据结构——你会在之后的两章中学习它们——和你自己创建出来的一样。这个YouTube 响应包含很多数据,作为演示我只打印出了前6 个视频的标题。再说一次,这是一个完整的Python 程序,你自己也可以运行一下。

示例1-1:intro/youtube.py

这个Python 小程序仅仅用了9 行代码就很好地完成了任务,并且具备很高的可读性。如果你看不懂下面的术语,没关系,接下来的几章会让你明白它们的意思。

第1 行:从Python 标准库中导入名为json 的所有代码。

第2 行:从Python 标准urllib 库中导入urlopen 函数。

第3 行:给变量url 赋值一个YouTube 地址。

第4 行:连接指定地址处的Web 服务器并请求指定的Web 服务。

第5 行:获取响应数据并赋值给变量contents。

第6 行:把contents 解码成一个JSON 格式的文本字符串并赋值给变量text。

第7 行:把text 转换为data——一个存储视频信息的Python 数据结构。

第8 行:每次获取一个视频的信息并赋值给变量video。

第8 行:使用两层Python 字典(data['feed']['entry'])和切片操作([0:6])。

第9 行:使用print 函数打印出视频标题。

视频信息中包含多种你之前见过的Python 数据结构,第3 章会详细介绍。

在这个例子中,我们使用了一些Python 标准库模块(它们是安装Python 时就已经包含的程序),但是它们并不是最好的。下面的代码使用第三方Python 软件包requests 重写了这个例子:

新版代码只有6 行,并且我认为可读性更高。第5 章会详细介绍requests 以及其他第三方Python 软件。

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:目录
下一篇:1.1 真实世界中的Python
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站