chore: clean repository history
This commit is contained in:
commit
e1fb2929c0
661 files changed
+167488
No files matched your search
@@ -0,0 +1,219 @@
|
||||
---
|
||||
doc_type: short
|
||||
full_text: sources/01_Python.md
|
||||
---
|
||||
|
||||
# 01_Python 总结
|
||||
|
||||
## 核心内容
|
||||
|
||||
本文是课程的 Python 入门开篇,介绍了 Python 的基本定位、获取方式、诞生背景,以及为什么应当从 命令行与终端 中学习和使用 Python。文档随后通过一组练习引导学习者使用 Python 交互式解释器完成计算、查询帮助、粘贴代码和调用网络 API 等任务。
|
||||
|
||||
## Python 是什么
|
||||
|
||||
Python 是一种解释型、高级编程语言,常被归类为“脚本语言”,与 Perl、Tcl、Ruby 等语言有相似之处。其语法部分受到 C 语言影响。
|
||||
|
||||
Python 由 Guido van Rossum 于 1990 年左右创建,名称来自 Monty Python。
|
||||
|
||||
## 获取与版本要求
|
||||
|
||||
课程建议从 [Python.org](https://www.python.org/) 获取 Python,并安装 Python 3.6 或更新版本。课程笔记和解答使用 Python 3.6,这是原课程材料的历史基线;当前学习建议使用仍受官方维护的 Python 3.x 版本。
|
||||
|
||||
如果在练习中 `import urllib.request` 失败,通常说明正在使用 Python 2;本课程要求使用 Python 3。
|
||||
|
||||
## Python 的设计动机
|
||||
|
||||
Guido van Rossum 创建 Python 的初衷,是在 C 语言和 Bourne shell 之间提供一种更高层次的语言。
|
||||
|
||||
背景是:
|
||||
|
||||
- 用 C 编写系统管理工具太慢;
|
||||
- 用 shell 完成某些任务又不够合适;
|
||||
- 因此需要一种能够“桥接 C 和 shell”的语言。
|
||||
|
||||
这说明 Python 从诞生之初就强调 脚本语言、系统自动化与高层表达能力。
|
||||
|
||||
## 在机器上运行 Python
|
||||
|
||||
Python 通常作为一个可从终端或命令 shell 启动的程序安装在机器上。用户可以在终端输入:
|
||||
|
||||
```bash
|
||||
python
|
||||
```
|
||||
|
||||
进入交互式解释器后,可以直接输入 Python 语句,例如:
|
||||
|
||||
```python
|
||||
>>> print("hello world")
|
||||
hello world
|
||||
```
|
||||
|
||||
文档强调:虽然有许多非终端环境可以编写 Python,但如果能够在终端中运行、调试和交互式使用 Python,就能成为更强的 Python 程序员。终端被视为 Python 的“原生环境”。
|
||||
|
||||
## 练习 1.1:把 Python 当作计算器
|
||||
|
||||
第一个练习要求在 Python 交互模式中进行算术计算。
|
||||
|
||||
示例问题:Lucky Larry 以每股 235.14 美元买入 75 股 Google 股票,现在价格为每股 711.25 美元,卖出后利润为:
|
||||
|
||||
```python
|
||||
>>> (711.25 - 235.14) * 75
|
||||
35708.25
|
||||
```
|
||||
|
||||
文档还介绍了交互式解释器中的 `_` 变量,它代表上一次计算结果。例如经纪人抽成 20% 后,Larry 保留 80%:
|
||||
|
||||
```python
|
||||
>>> _ * 0.80
|
||||
28566.600000000002
|
||||
```
|
||||
|
||||
这一练习展示了 Python交互式解释器 作为快速计算工具的用途。
|
||||
|
||||
## 练习 1.2:使用 help() 获取帮助
|
||||
|
||||
第二个练习介绍 Python 内置的 `help()` 命令:
|
||||
|
||||
- `help(abs)`:查看 `abs()` 函数帮助;
|
||||
- `help(round)`:查看 `round()` 函数帮助;
|
||||
- `help()`:进入交互式帮助查看器。
|
||||
|
||||
注意:`help()` 不能直接用于 `for`、`if`、`while` 等基本语句,例如 `help(for)` 会导致语法错误。可以尝试使用字符串形式:
|
||||
|
||||
```python
|
||||
help("for")
|
||||
```
|
||||
|
||||
如果仍无法获得帮助,则应查阅互联网或官方文档。文档建议访问 <https://docs.python.org/3/>,并在库参考的内置函数部分查找 `abs()` 的文档。
|
||||
|
||||
相关主题:Python内置函数、Python文档与帮助系统。
|
||||
|
||||
## 练习 1.3:复制粘贴与手动输入
|
||||
|
||||
课程鼓励学习者手动输入交互式代码,而不是直接复制粘贴。原因是:初学者通过放慢速度、亲自输入并思考代码,会更好地建立语言感觉。
|
||||
|
||||
如果必须复制粘贴,应注意:
|
||||
|
||||
- 只复制 `>>>` 提示符之后的代码;
|
||||
- 不要复制提示符本身;
|
||||
- 复制到第一个空行或下一个 `>>>` 之前为止;
|
||||
- 粘贴后可能需要按一次回车运行;
|
||||
- 基础 Python shell 中一次不能粘贴多个交互式命令。
|
||||
|
||||
示例代码包括:
|
||||
|
||||
```python
|
||||
>>> 12 + 20
|
||||
32
|
||||
```
|
||||
|
||||
跨行表达式:
|
||||
|
||||
```python
|
||||
>>> (3 + 4
|
||||
+ 5 + 6)
|
||||
18
|
||||
```
|
||||
|
||||
以及 `for` 循环:
|
||||
|
||||
```python
|
||||
>>> for i in range(5):
|
||||
print(i)
|
||||
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
```
|
||||
|
||||
该练习引出 Python代码输入与交互、Python缩进 和 交互式编程学习方法 等主题。
|
||||
|
||||
## 练习 1.4:公交车到站查询示例
|
||||
|
||||
第四个练习展示了一个更高级但直观的 Python 示例:使用 Python 下载网页、解析 XML,并提取芝加哥 CTA 公交到站预测信息。
|
||||
|
||||
原始示例使用:
|
||||
|
||||
```python
|
||||
>>> 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)
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```text
|
||||
6 MIN
|
||||
18 MIN
|
||||
28 MIN
|
||||
```
|
||||
|
||||
文档指出,通过约 6 行代码,学习者已经完成了:
|
||||
|
||||
- 下载网页;
|
||||
- 解析 XML 文档;
|
||||
- 提取有用信息;
|
||||
- 输出公交车到站预测。
|
||||
|
||||
这展示了 Python 在 [[concepts/Python-网络请求]]、[[concepts/XML-解析]] 和快速自动化任务中的表达力。
|
||||
|
||||
## API 失效与更新说明
|
||||
|
||||
文档特别说明,原来的公交 API 已经失效。后来有用户提供了修改后的版本,但需要申请自己的 API key:
|
||||
|
||||
```python
|
||||
import urllib.request
|
||||
u = urllib.request.urlopen('http://www.ctabustracker.com/bustime/api/v2/getpredictions?key=REDACTED_PLACEHOLDER&rt=22&stpid=14791')
|
||||
from xml.etree.ElementTree import parse
|
||||
doc = parse(u)
|
||||
print("Arrival time in minutes:")
|
||||
for pt in doc.findall('.//prdctdn'):
|
||||
print(pt.text)
|
||||
```
|
||||
|
||||
这也提醒学习者:外部 API 并不永久稳定,依赖网络服务的示例可能随着时间变化而失效。该示例主要用于展示网络请求与 XML 解析思路,不保证 URL 长期可用;实际练习可改用本地 XML 示例文件或课程当前仓库说明。
|
||||
|
||||
## 代理与环境变量
|
||||
|
||||
如果工作环境需要 HTTP 代理,可能需要设置 `HTTP_PROXY` 环境变量:
|
||||
|
||||
```python
|
||||
>>> import os
|
||||
>>> os.environ['HTTP_PROXY'] = 'http://yourproxy.server.com'
|
||||
```
|
||||
|
||||
这部分涉及 环境变量 和网络环境配置。
|
||||
|
||||
## 重要学习建议
|
||||
|
||||
本文反复强调几个入门学习原则:
|
||||
|
||||
1. 优先掌握在终端中运行 Python;
|
||||
2. 使用交互式解释器进行实验;
|
||||
3. 初学时尽量手动输入代码,而不是复制粘贴;
|
||||
4. 善用 `help()` 和官方文档;
|
||||
5. 不必在第一个高级网络示例中完全理解所有细节,后续课程并不依赖 XML 解析。
|
||||
|
||||
## 可延伸的概念页
|
||||
|
||||
- Python:Python 的语言定位、历史与用途。
|
||||
- Python交互式解释器:`>>>` 提示符、即时执行、`_` 变量等。
|
||||
- 命令行与终端:Python 的原生运行环境。
|
||||
- Python文档与帮助系统:`help()`、官方文档与内置函数参考。
|
||||
- 脚本语言:Python 在 C 与 shell 之间的角色。
|
||||
- [[concepts/Python-网络请求]]:使用 `urllib.request` 获取远程资源。
|
||||
- [[concepts/XML-解析]]:使用 `xml.etree.ElementTree` 解析 XML 数据。
|
||||
- [[concepts/环境变量与进程环境]]:通过 `os.environ` 配置运行环境。
|
||||
|
||||
## Related Concepts
|
||||
- [[concepts/Python-交互式解释器]]
|
||||
- [[concepts/Python-文档与帮助系统]]
|
||||
- [[concepts/Python-开发环境]]
|
||||
- [[concepts/课程练习工作流]]
|
||||
- [[concepts/模块与-import]]
|
||||
- [[concepts/函数]]
|
||||
Reference in new issue
Block a user