目录 | 下一节 (1.2 第一个程序)

1.1 Python

Python 是什么?

Python 是一种解释型(译者注:区别于编译型)的高级语言, 通常被归类为 "脚本语言" 并被认为类似于Perl、Tcl 或 Ruby 等语言。Python 的语法大致受 C 编程语言的启发。

Python 由吉多·范罗苏姆(Guido van Rossum)于 1990 年创建,用 Python 命名是为了纪念吉多·范罗苏姆所喜欢的马戏团 Monty Python。

从哪里获取 Python?

您可以从 Python.org 获取Python。就本课程而言,您只需要对 Python 进行基本的安装即可。建议安装 Python 3.6 版本或者更新的 Python 版本,因为课程和练习题中使用的是 Python 3.6。

为什么创建 Python?

为什么创建 Python 呢?用 Python 创建者的话来说就是:

我创建 Python 的原始动机是认为在 Amoeba [操作系统] 项目中需要一种更高级的语言。考虑到使用 C 语言开发系统管理工具所花费的时间太长,并且,由于各种原因,在 Bourne shell(译者注: Bourne shell 是 shell 的一种类型) 中执行这些操作无效,所以需要一种语言来弥合 C 语言和 shell 之间的鸿沟。

• 吉多·范罗苏姆(Guido van Rossum)

Python 在电脑上的哪个位置?

尽管在很多环境中都可以运行 Python,但是 Python 通常作为一个程序安装在您的电脑上,并且这个程序可以在终端或者命令行 shell 运行。在终端上,您可以像下面这样输入 Python:

bash $ python
Python 3.8.1 (default, Feb 20 2020, 09:29:22)
[Clang 10.0.0 (clang-1000.10.44.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world")
hello world
>>>

如果您是刚开始使用 shell 或者终端,您可能应该先停下来,先找一个关于 shell 或者终端的简短课程进行学习,然后再返回到这里继续本课程的学习。

尽管也可以在很多非 shell 的环境中编写 Python 代码,但是如果您能够在终端上运行、调试并与之交互,那么您将成为一名更强大的 Python 程序员。这是 Python 的原生环境,如果您能在原生环境中使用 Python,那么您就能在其它任何地方使用 Python。

练习题

练习 1.1: 使用 Python 作为计算器

在您的电脑上,启动 Python 并把它当做计算器去解决下面的问题。

幸运的拉里(Larry)以每股 235.14 美元的价格购买了 75 股谷歌的股票。如今,谷歌的股价是 711.25 美元每股,使用 Python 的交互模式作为计算器,计算出如果拉里出售他所有的股票,他将获取多少利润。

>>> (711.25 - 235.14) * 75
35708.25
>>>

高级技巧:使用下划线(_)变量来使用上次的计算结果。示例:如果股票经纪人(译者注:证券经纪人)拿走了 20% 的抽成,拉里赚了多少利润?

>>> _ * 0.80
28566.600000000002
>>>

练习 1.2: 获取帮助

使用 help() 函数可获取有关 abs() 函数的帮助。然后还可以使用 help() 函数获取关于 round() 函数的帮助。仅仅输入不带参数的 help() 函数可以进入交互的帮助查看器(viewer)。

使用 help() 函数有一个要注意点的是:help() 函数并不适用于基本的 Python 语句,例如 for, if, while 语句(也就是说,如果您输入 help(for),那么将会得到一个语法错误( SyntaxError))。替代方案是:将需要获取帮助的主题放在引号中(quotes,译者注:在 Python 中,单引号和双引号是一样的,所以 quotes 在这里既可以指单引号(''),也可以指双引号("")),例如:help("for")。如果这还是没用,那么您就得上网搜索了。

进阶:访问 http://docs.python.org,然后找到 abs() 函数的说明文档(提示:可以在库参考(Library Reference)中的内建函数(Built-in Functions)部分找到它)。

练习 1.3: 剪切和粘贴

本课程是由一系列的传统网页构成,建议您尝试亲自手动输入这些交互的 Python 示例代码。尤其是对于第一次学习 Python 的人,推荐使用这种 ”慢速的方法“。通过降低学习速度,手动输入代码、并且思考您在做什么,您将对Python 这门语言有更好的了解。

如果您一定要剪切和粘贴示例代码,请从 >>> 提示符后开始选择,一直选择到最后,但是不要超过第一个空行或者下一个 >>> 提示符(以先出现的 >>> 提示符为准)。从浏览器中选择 “复制”,然后回到 Python 的窗口,接着选择 “粘贴” 将代码复制到 Python shell 中。当您粘贴之后,为了让代码运行,您需要按一下回车键(译者注:在windows系统的电脑上,是 Enter 键,在 mac 系统的电脑上是 Return 键)。

在此会话( session)中使用 “剪切粘贴” 的方式执行 Python 语句:

>>> 12 + 20
32
>>> (3 + 4
+ 5 + 6)
18
>>> for i in range(5):
print(i) 0
1
2
3
4
>>>

警告:不能一次粘贴多个 Python 命令(命令指 >>> 符号后面的 语句(statements))到基本的 Python shell 中,一次只能粘贴一个命令。

现在,您已经完成了这一步,请记住,通过缓慢地输入代码,并且思考它——而不是剪切和粘贴,在学习课程之后,您将取得更多的收获。

练习 1.4: 我的公共汽车在哪里?

现在尝试一些高级的内容,输入下面的语句,看看在芝加哥的克拉克街(Clark street)和巴尔莫勒尔街(Balmoral street)拐角处等下一辆北上的 CTA #22 公交车的人需要等多久:

>>> import urllib.request
>>> u = urllib.request.urlopen('http://ctabustracker.com/bustime/map/getStopPredictions.jsp?stop=14791&route=22')
>>> from xml.etree.ElementTree import parse
>>> doc = parse(u)
>>> for pt in doc.findall('.//pt'):
print(pt.text) 6 MIN
18 MIN
28 MIN
>>>

上面大约6 行的代码下载了一个网页,解析了一个 XML 文档,并且提取了一些有用的信息。上面访问的数据实际上是提供给网站 http://ctabustracker.com/bustime/home.jsp 的。再运行一次上面的代码,然后观察预期的变化。

注意:此服务只报告接下来 30 分钟内公交车的到达时间。如果您位于与芝加哥不同的时区,而此时凑巧是芝加哥的凌晨 3 点,那么您可能得不到任何的输出。您可以使用上面的跟踪链接(http://ctabustracker.com/bustime/home.jsp )进行仔细检查。

如果第一个导入语句 import urllib.request 导入失败,很可能是因为您使用的是 Python 2。对于本课程,需要确保使用的是 Python 3.6 或者更新的版本。如果有需要,请访问 https://www.python.org 进行下载。

如果您的工作环境要求使用 HTTP 代理服务器,则您可能需要设置 HTTP_PROXY 环境变量,才能使本部分练习正常进行。示例:

>>> import os
>>> os.environ['HTTP_PROXY'] = 'http://yourproxy.server.com'
>>>

如果您无法完成本部分的练习,那么也没关系,本课程的其余部分与解析 XML 文档无关。

目录 | 下一节 (1.2 第一个程序)

翻译:《实用的Python编程》01_01_Python的更多相关文章

  1. 翻译:《实用的Python编程》InstructorNotes

    实用的 Python 编程--讲师说明 作者:戴维·比兹利(David Beazley) 概述 对于如何使用我的课程"实用的 Python 编程"进行教学的问题,本文档提供一些通用 ...

  2. 翻译:《实用的Python编程》README

    欢迎光临 大约 25 年前,当我第一次学习 Python 时,发现 Python 竟然可以被高效地应用到各种混乱的工作项目上,我立即被震惊了.15 年前,我自己也将这种乐趣教授给别人.教学的结果就是本 ...

  3. 翻译:《实用的Python编程》05_02_Classes_encapsulation

    目录 | 上一节 (5.1 再谈字典) | 下一节 (6 生成器) 5.2 类和封装 创建类时,通常会尝试将类的内部细节进行封装.本节介绍 Python 编程中有关封装的习惯用法(包括私有变量和私有属 ...

  4. 翻译:《实用的Python编程》04_02_Inheritance

    目录 | 上一节 (4.1 类) | 下一节 (4.3 特殊方法) 4.2 继承 继承(inheritance)是编写可扩展程序程序的常用手段.本节对继承的思想(idea)进行探讨. 简介 继承用于特 ...

  5. 翻译:《实用的Python编程》01_02_Hello_world

    目录 | 上一节 (1.1 Python) | 下一节 (1.3 数字) 1.2 第一个程序 本节讨论有关如何创建一个程序.运行解释器和调试的基础知识. 运行 Python Python 程序始终在解 ...

  6. 翻译:《实用的Python编程》03_03_Error_checking

    目录 | 上一节 (3.2 深入函数) | 下一节 (3.4 模块) 3.3 错误检查 虽然前面已经介绍了异常,但本节补充一些有关错误检查和异常处理的其它细节. 程序是如何运行失败的 Python 不 ...

  7. 翻译:《实用的Python编程》03_04_Modules

    目录 | 上一节 (3.3 错误检查) | 下一节 (3.5 主模块) 3.4 模块 本节介绍模块的概念以及如何使用跨多个文件的函数. 模块和导入 任何一个 Python 源文件都是一个模块. # f ...

  8. 翻译:《实用的Python编程》03_05_Main_module

    目录 | 上一节 (3.4 模块) | 下一节 (3.6 设计讨论) 3.5 主模块 本节介绍主程序(主模块)的概念 主函数 在许多编程语言中,存在一个主函数或者主方法的概念. // c / c++ ...

  9. 翻译:《实用的Python编程》04_01_Class

    目录 | 上一节 (3.6 设计讨论) | 下一节 (4.2 继承) 4.1 类 本节介绍 class 语句以及创建新对象的方式. 面向对象编程(OOP) 面向对象编程是一种将代码组织成对象集合的编程 ...

随机推荐

  1. python 中的sum( )函数 与 numpy中的 sum( )的区别

    一. python sum函数 描述: sum() 对序列进行求和 用法: sum(iterable[, start]) iterable:可迭代对象,例如,列表,元组,集合. start:指定相加的 ...

  2. Debian安装HomeBrew

    前言 HomeBrew 的用处我想使用 Mac 的开发人员都知道, 本篇讲解如何在 Debian 上安装 BrewLinux 更新: 后来发现并不是很好用, 不建议使用 官方推荐的脚本安装 注意这里只 ...

  3. 【Java基础】Java8 新特性

    Java8 新特性 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).使用它可以写出更简洁.更灵活的代码. L ...

  4. 【Flutter】可滚动组件之GridView

    前言 GridView可以构建一个二维网格列表.需要关注的是gridDelegate参数,类型是SliverGridDelegate,它的作用是控制GridView子组件如何排列(layout).Sl ...

  5. .NET 云原生架构师训练营(模块二 基础巩固 敏捷开发)--学习笔记

    2.7.1 敏捷开发 敏捷介绍 敏捷的起源 敏捷软件开发宣言 敏捷开发十二原则 生命周期对比 敏捷开发的特点 敏捷的发展 敏捷的核心 敏捷的起源 2001年,17个老头子在一起一边滑雪,一边讨论工作, ...

  6. linux网关服务器

    问题 多台服务器在内网网段,其中只有一台有公网ip可以上外网,需要让所有服务器都能连接外网 解决思路 使用路由转发的方式,将拥有公网ip的服务器搭建为网关服务器,即作为统一的公网出口 所谓转发即当主机 ...

  7. scp传文件夹

    scp -r /root/backupdb/2014-08-15(文件夹)    root@192.168.1.98:/root(目录)

  8. openshift 3.11安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  9. 输入12V,输出12V的限流芯片

    随着手机充电电流的提升,和设备的多样化,USB限流芯片就随着需求的增加而越来越多,同时为了更好的保护电子设备,需要进行一路或者多路的负载进行限流. USB限流芯片,5V输入 1, PW1502,常使用 ...

  10. HATEOAS的简单认识

    HATEOAS: 超媒体作为应用程序状态引擎(HATEOAS)是REST应用程序体系结构的一个组件,它将其与其他网络应用程序体系结构区分开来. 使用HATEOAS,客户端与网络应用程序交互,其应用程序 ...