翻译:《实用的Python编程》01_01_Python
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 文档无关。
翻译:《实用的Python编程》01_01_Python的更多相关文章
- 翻译:《实用的Python编程》InstructorNotes
实用的 Python 编程--讲师说明 作者:戴维·比兹利(David Beazley) 概述 对于如何使用我的课程"实用的 Python 编程"进行教学的问题,本文档提供一些通用 ...
- 翻译:《实用的Python编程》README
欢迎光临 大约 25 年前,当我第一次学习 Python 时,发现 Python 竟然可以被高效地应用到各种混乱的工作项目上,我立即被震惊了.15 年前,我自己也将这种乐趣教授给别人.教学的结果就是本 ...
- 翻译:《实用的Python编程》05_02_Classes_encapsulation
目录 | 上一节 (5.1 再谈字典) | 下一节 (6 生成器) 5.2 类和封装 创建类时,通常会尝试将类的内部细节进行封装.本节介绍 Python 编程中有关封装的习惯用法(包括私有变量和私有属 ...
- 翻译:《实用的Python编程》04_02_Inheritance
目录 | 上一节 (4.1 类) | 下一节 (4.3 特殊方法) 4.2 继承 继承(inheritance)是编写可扩展程序程序的常用手段.本节对继承的思想(idea)进行探讨. 简介 继承用于特 ...
- 翻译:《实用的Python编程》01_02_Hello_world
目录 | 上一节 (1.1 Python) | 下一节 (1.3 数字) 1.2 第一个程序 本节讨论有关如何创建一个程序.运行解释器和调试的基础知识. 运行 Python Python 程序始终在解 ...
- 翻译:《实用的Python编程》03_03_Error_checking
目录 | 上一节 (3.2 深入函数) | 下一节 (3.4 模块) 3.3 错误检查 虽然前面已经介绍了异常,但本节补充一些有关错误检查和异常处理的其它细节. 程序是如何运行失败的 Python 不 ...
- 翻译:《实用的Python编程》03_04_Modules
目录 | 上一节 (3.3 错误检查) | 下一节 (3.5 主模块) 3.4 模块 本节介绍模块的概念以及如何使用跨多个文件的函数. 模块和导入 任何一个 Python 源文件都是一个模块. # f ...
- 翻译:《实用的Python编程》03_05_Main_module
目录 | 上一节 (3.4 模块) | 下一节 (3.6 设计讨论) 3.5 主模块 本节介绍主程序(主模块)的概念 主函数 在许多编程语言中,存在一个主函数或者主方法的概念. // c / c++ ...
- 翻译:《实用的Python编程》04_01_Class
目录 | 上一节 (3.6 设计讨论) | 下一节 (4.2 继承) 4.1 类 本节介绍 class 语句以及创建新对象的方式. 面向对象编程(OOP) 面向对象编程是一种将代码组织成对象集合的编程 ...
随机推荐
- R语言学习笔记-单一决策树
决策树比较简单明晰,但存在不稳定的风险,数据的微小变化会导致最佳决策树结构的巨大变化,且决策树可能会变得比较复杂. 其算法原理参见https://zhuanlan.zhihu.com/p/148010 ...
- Hadoop伪分布式模式
搭建在单一服务器 基于官方文档 http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SingleCluster ...
- 关于es6 let var const 以及Symbol的总结
```javascript //es6新增块级作用域.声明变量用关键字let const , // es5中只有函数作用域和全局作用域,声明变量用关键字var // let 和const 声明的变量 ...
- Jenkins+GitLab+SonnarQube搭建CI/CD全流程
1. CI/CD 1.1 CI - 持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干.持续集成的目的就是让产品可以快速迭 ...
- springBoot实现redis分布式锁
参考:https://blog.csdn.net/weixin_44634197/article/details/108308395 .. 使用redis的set命令带NX(not exist)参数实 ...
- 【Oracle】sum(..) over(..)用法分析
今天再看sql优化详解的时候,提到了一个sum(..) over(..) 于是自己实验并在网上找了相关的一些文章来看 下面创建一张表: create sequence xulie increment ...
- 【ORA】ORA-00030: User session ID does not exist.
今天巡检,查询锁相关的情况的时候,确认业务后,准备将锁干掉,但是干掉的时候报了一个错误,ORA-00030 发现回话不存在,我以为pmon进程已经将锁进程kill掉了,就再次查看,发现,还是存在 这个 ...
- Springboot之文件监控
背景:在实际环境部署构成中,由于特殊网络环境因素,有很多服务器之间的网络都是单向的,不能互相访问的,只有通过特定技术手段做到文件的单项摆渡,这就需要在两台服务器上分别写序列化程序和反序列化程序,这里不 ...
- ctfshow—web—web5
打开靶机,代码审计 附上代码 <?php error_reporting(0); ?> <html lang="zh-CN"> <head> & ...
- day128:MySQL进阶:
目录 1.介绍和安装 2.基础管理 2.1 用户管理 2.2 权限管理 2.3 连接管理 2.4 配置管理 3.MySQL的体系结构 4.SQL 5.索引和执行计划 1.介绍和安装 1.1 数据库分类 ...