# 練習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)
- 下一步