# 练习37.复习符号
现在该复习你学过的符号和python关键字了,而且你在本节还会学到一些新的东西。我在这里所作的是将所有的Python符号和关键字列出来,这些都是值得掌握的重点。
在这节课中,你需要复习每一个关键字,回想它的作用并且写下来,接着上网搜索它真正的功能。有些内容可能是难以搜索的,所以这对你可能有些难度,不过无论如何,你都要尝试一下。
如果你发现记忆中的内容有误,就在索引卡片上写下正确的定义,试着将自己的记忆纠正过来。
最后,将每一种符号和关键字用在程序里,你可以用一个小程序来做,也可以尽量多写一些程序来巩固记忆。这里的关键点是明白各个符号的作用,确认自己没搞错,如果搞错了就纠正过来,然后将其用在程序里,并且通过这样的方式加深自己的记忆。
## 关键字
| KEYWORD | DESCRIPTION | EXAMPLE |
|-----|-----|-----|
| `and` | 逻辑与 | `True and False == False` |
| `as` | `with-as`语句的一部分 | `with X as Y: pass` |
| `assert` | 声明 | `assert False, "Error!"` |
| `break` | 停止整个循环 | `while True: break` |
| `class` | 定义一个类 | `class Person(object)` |
| `continue` | 停止这一次循环,但继续下一次循环 | `while True: continuev` |
| `def` | 定义一个函数 | `def X(): pass` |
| `del` | 从字典中删除 | `del X[Y]` |
| `elif` | Else if 条件 | `if: X; elif: Y; else: J` |
| `else` | Else 条件 | `if: X; elif: Y; else: J` |
| `except` | 如果捕获异常,执行该代码块 | `except ValueError, e: print e` |
| `exec` | 将字符串作为Python代码执行 | `exec 'print "hello"'` |
| `finally` | 不管是否有异常,finally代码块都执行 | `finally: pass` |
| `for` | for循环 | `for X in Y: pass` |
| `from` | 从某一模块中引入特定部分 | `import X from Y` |
| `global` | 定义一个全局变量 | `global X` |
| `if` | If 条件 | `if: X; elif: Y; else: J` |
| `import` | 引入一个模块到当前模块 | `import os` |
| `in` | for循环的一部分/ 测试`X in Y`. | `for X in Y: pass` / `1 in [1] == True` |
| `is` | 类似`==`,判断相等 | `1 is 1 == True` |
| `lambda` | 创建一个无名函数 | `s = lambda y: y ** y; s(3)` |
| `not` | 逻辑非 | `not True == False` |
| `or` | 逻辑或 | `True or False == True` |
| `pass` | 该代码块为空 | `def empty(): pass` |
| `print` | 打印一个字符串 | `print 'this string'` |
| `raise` | 代码出错时,抛出一个异常 | `raise ValueError("No")` |
| `return` | 退出函数并返回一个返回值 | `def X(): return Y` |
| `try` | 尝试代签代码块,有异常则进入except代码块 | `try: pass` |
| `while` | While循环 | `while X: pass` |
| `with` | 一个变量的别名 | `with X as Y: pass` |
| `yield` | 暂停, 返回给调用者 | `def X(): yield Y; X().next()` |
## 数据类型
针对每一种数据类型,都举出一些例子来,例如针对string,你可以举出一些字符串,针对 number,你可以举出一些数字。
| TYPE | DESCRIPTION | EXAMPLE |
|-----|-----|-----|
| `True` | True 布尔值. | `True or False == True` |
| `False` | False 布尔值. | `False and True == False` |
| `None` | 表示 "nothing" 或者"no value". | `x = None` |
| `strings` | 字符串,储存文本信息 | `x = "hello"` |
| `numbers` | 储存整数 | `i = 100` |
| `floats` | 储存小数 | `i = 10.389` |
| `lists` | 储存某种东西的列表 | `j = [1,2,3,4]` |
| `dicts` | 储存某些东西的键值对 | `e = {'x': 1, 'y': 2}` |
## 字符串转义序列
对于字符串转义序列,你需要在字符串中应用它们,确认自己清楚地知道它们的功能。
| ESCAPE | DESCRIPTION |
|-----|-----|
| \\ | 斜线 |
| \' | 单引号 |
| \" | 双引号 |
| \a | Bell |
| \b | 退格 |
| \f | Formfeed |
| \n | 换行 |
| \r | Carriage |
| \t | Tab键 |
| \v | 垂直的tab |
## 字符串格式化
| ESCAPE | DESCRIPTION | EXAMPLE |
|-----|-----|-----|
| `%d` | 格式化整数 (不包含浮点数). | `"%d" % 45 == '45'` |
| `%i` | 与%d相同 | `"%i" % 45 == '45'` |
| `%o` | 8进制数字 | `"%o" % 1000 == '1750'` |
| `%u` | 负数 | `"%u" % -1000 == '-1000'` |
| `%x` | 小写的十六进制数字 | `"%x" % 1000 == '3e8'` |
| `%X` | 大写的十六进制数字 | `"%X" % 1000 == '3E8'` |
| `%e` | 小写 'e'的指数标记 | `"%e" % 1000 == '1.000000e+03'` |
| `%E` | 大写 'e'的指数标记 | `"%E" % 1000 == '1.000000E+03'` |
| `%f` | 浮点数 | `"%f" % 10.34 == '10.340000'` |
| `%F` | 与%f相同 | `"%F" % 10.34 == '10.340000'` |
| `%g` | %f 或者 %e中较短的一个 | `"%g" % 10.34 == '10.34'` |
| `%G` | %F 或者 %E中较短的一个 | `"%G" % 10.34 == '10.34'` |
| `%c` | 字符格式化 | `"%c" % 34 == '"'` |
| `%r` | 类型格式化 | `"%r" % int == "<type 'int'>"` |
| `%s` | 字符串格式 | `"%s there" % 'hi' == 'hi there'` |
| `%%` | 表示百分号% | `"%g%%" % 10.34 == '10.34%'` |
## 操作符
有些操作符号你可能还不熟悉,不过还是一一看过去,研究一下它们的功能,如果你研究不出来也没关系,记录下来日后解决。
| OPERATOR | DESCRIPTION | EXAMPLE |
|-----|-----|-----|
| `+` | 加 | `2 + 4 == 6` |
| `-` | 减 | `2 - 4 == -2` |
| `*` | 乘 | `2 * 4 == 8` |
| `**` | 幂乘 | `2 ** 4 == 16` |
| `/` | 除 | `2 / 4.0 == 0.5` |
| `//` | 整除,得到除法的商。 | `2 // 4.0 == 0.0` |
| `%` | 模除,返回除法的余数。 | `2 % 4 == 2` |
| `<` | 小于 | `4 < 4 == False` |
| `>` | 大于 | `4 > 4 == False` |
| `<=` | 小于等于 | `4 <= 4 == True` |
| `>=` | 大于等于 | `4 >= 4 == True` |
| `==` | 等于,比较操作对象是否相等。 | `4 == 5 == False` |
| `!=` | 不等于 | `4 != 5 == True` |
| `<>` | 不等于 | `4 <> 5 == True` |
| `( )` | 括号 | `len('hi') == 2` |
| `[ ]` | 列表括号 | `[1,3,4]` |
| `{ }` | 字典括号 | `{'x': 5, 'y': 10}` |
| `@` | 装饰符 | `@classmethod` |
| `,` | 逗号 | `range(0, 10)` |
| `:` | 冒号 | `def X():` |
| `.` | Dot | `self.x = 10` |
| `=` | 赋值等于 | `x = 10` |
| `;` | 分号 | `print "hi"; print "there"` |
| `+=` | 加等于 | `x = 1; x += 2` |
| `-=` | 减等于 | `x = 1; x -= 2` |
| `*=` | 乘等于 | `x = 1; x *= 2` |
| `/=` | 除等于 | `x = 1; x /= 2` |
| `//=` | 整除等于 | `x = 1; x //= 2` |
| `%=` | 模除等于 | `x = 1; x %= 2` |
| `**=` | 幂乘等于 | `x = 1; x **= 2` |
花一个星期学习这些东西,如果你能提前完成就更好了。我们的目的是覆盖到所有的符号 类型,确认你已经牢牢记住它们。另外很重要的一点是这样你可以找出自己还不知道哪些 东西,为自己日后学习找到一些方向。
## 读代码
找一些python的代码读读试试。你可以读任何的python代码,并且可以借鉴其中的一些思想。你已经具备足够的知识去阅读代码,但是你可能还不能完全明白代码实现了什么功能。这节练习就是教给你如何用你学过的知识弄明白别人的代码。
首先,把你找到的代码打印出来,是的,你需要把它们打印出来,因为相比电脑屏幕,你的大脑和眼睛更容易看清楚纸上的内容。
接下来,通读你打印的代码,按照下面说的做一些笔记:
> 1. 找出所有的函数,以及它们的功能。
> 1. 每一个变量在哪里被赋予初始值。
> 1. 代码的不同地方有没有相同名字的变量,这可能会带来隐患。
> 1. 有没有if语句没有else代码块的,这么写对吗?
> 1. 有没有无终止的while循环
> 1. 标记出不管任何原因,你看不懂的代码部分。
第三步,当你做完上面内容之后,尝试给自己解释一下自己写的注释。说明这些函数是如何应用的,包含哪些变量,以及你想弄明白的其他事情。
最后,在所有难以理解的部分,逐行、逐个函数的跟踪每个变量的值。你也可以在准备一份打印的代码,在空白处写下你要跟踪的每个变量的值。
当你弄明白这段代码是做什么的之后,回到电脑上再读一遍代码,看看能不能找到一些新的东西。多找一些代码练习,直到你能不需要打印代码就能弄懂它们的功能为止。
## 附加题
> 1. 弄明白“流程图”是什么,试着画几个出来
> 1. 读代码的过程,如果发现了什么错误,尝试着改正它,并将你修改后的结果发给代码的作者。
> 1. 另一个技巧是用`#`给你正在读的代码加注释,有时候,你的这些注释会帮到后面来读代码的人哦。
## 常见问题
### Q: `%d` 和`%i`有什么区别?
> 没有区别,只不过由于历史原因,人们更喜欢用`%d`。
### Q: 我们怎么在网上搜索这些符号和关键字?
> 只要把“python”放在你要搜索的内容之前就可以了,比如,你想搜索`yield`,那么就输入`python yield`。
- 序言
- 前言
- 简介
- 0:安装和准备
- 1:第一个程序
- 2:注释和“#”井号
- 3:数字和数学计算
- 4:变量和命名
- 5:更多的变量和打印
- 6:字符串和文本
- 7:更多的打印(输出)
- 8:打印, 打印
- 9:打印, 打印, 打印
- 10:那是什么?
- 11:提问
- 12:提示别人
- 13:参数, 解包, 变量
- 14:提示和传递
- 15:读文件
- 16:读写文件
- 17:更多文件操作
- 18:命名, 变量, 代码, 函数
- 19:函数和变量
- 20:函数和文件
- 21:函数的返回值
- 22:到目前为止你学到了什么?
- 23:阅读代码
- 24:更多的练习
- 25:更多更多的练习
- 26:恭喜你,可以进行一次考试了
- 27:记住逻辑
- 28:布尔表达式
- 29:IF 语句
- 30:Else 和 If
- 31:做出决定
- 32:循环和列表
- 33:while循环
- 34:访问列表元素
- 35:分支和函数
- 36:设计和调试
- 37:复习符号
- 38:列表操作
- 39:字典,可爱的字典
- 40:模块, 类和对象
- 41:学会说面向对象
- 42:对象、类、以及从属关系
- 43:基本的面向对象的分析和设计
- 44:继承Vs.包含
- 45:你来制作一个游戏
- 46:项目骨架
- 47:自动化测试
- 48:更复杂的用户输入
- 49:写代码语句
- 50:你的第一个网站
- 51:从浏览器获取输入
- 52:开始你的web游戏
- 来自老程序员的建议
- 下一步
- 附录A:命令行教程
- 简介
- 安装和准备
- 路径, 文件夹, 名录 (pwd)
- 如果你迷路了
- 创建一个路径 (mkdir)
- 改变当前路径 (cd)
- 列出当前路径 (ls)
- 删除路径 (rmdir)
- 目录切换(pushd, popd)
- 生成一个空文件(Touch, New-Item)
- 复制文件 (cp)
- 移动文件 (mv)
- 查看文件 (less, MORE)
- 输出文件 (cat)
- 删除文件 (rm)
- 退出命令行 (exit)
- 下一步