鍍金池/ 教程/ Python/ exercise10.那是什么?
附錄 A-練習(xí) 9:生成一個空文件(Touch, New-Item)
附錄 A-練習(xí) 10:復(fù)制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習(xí) 14:刪除文件 (rm)
附錄 A-練習(xí) 11:移動文件 (mv)
exercise46.項目骨架
附錄 A-練習(xí) 3:如果你迷路了
exercise37.復(fù)習(xí)符號
exercise47.自動化測試
exercise3.數(shù)字和數(shù)學(xué)計算
附錄 A-練習(xí) 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對象、類、以及從屬關(guān)系
exercise48.更復(fù)雜的用戶輸入
下一步
簡介
附錄 A-練習(xí) 7:刪除路徑 (rmdir)
exercise49.寫代碼語句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類和對象
附錄 A-練習(xí) 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達式
附錄 A-練習(xí) 4:創(chuàng)建一個路徑 (mkdir)
附錄 A-練習(xí) 15:退出命令行 (exit)
exercise25. 更多更多的練習(xí)
exercise6.字符串和文本
exercise2.注釋和井號“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個程序
exercise23. 閱讀代碼
附錄 A-練習(xí) 5:改變當前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習(xí)
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學(xué)到了什么?
exercise41.學(xué)會說面向?qū)ο?/span>
exercise52.開始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來制作一個游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語句
exercise36.設(shè)計和調(diào)試
exercise0.安裝和準備
exercise50.你的第一個網(wǎng)站
附錄 A-練習(xí) 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習(xí) 6:列出當前路徑 (ls)
exercise16.讀寫文件
exercise4.變量和命名
exercise34.訪問列表元素
exercise11.提問
exercise43.基本的面向?qū)ο蟮姆治龊驮O(shè)計
附錄 A-簡介
附錄 A-練習(xí) 8:目錄切換(pushd, popd)
來自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打印(輸出)
附錄 A-練習(xí) 13:輸出文件 (cat)
exercise39.字典,可愛的字典

exercise10.那是什么?

在習(xí)題 9 中我們接觸了一些新東西。我讓你看到兩種讓字符串擴展到多行的方法。第一種方法是在月份之間用 \n (back-slash n )隔開。 這兩個字符的作用是在該位置上放入一個“新行(new line)”字符。

使用反斜杠 (back-slash) 可以將難打印出來的字符放到字符串。針對不同的符號有很多這樣的所謂“轉(zhuǎn)義序列(escape sequences)”,但有一個特殊的轉(zhuǎn)義序列,就是 雙反斜杠(double back-slash) \ 。這兩個字符組合會打印出一個反斜杠來。接下來我們做幾個練習(xí),然后你就知道這些轉(zhuǎn)義序列的意義了。

另外一種重要的轉(zhuǎn)義序列是用來將單引號 ' 和雙引號 " 轉(zhuǎn)義。想象你有一個用雙引號引用起來的字符串,你想要在字符串的內(nèi)容里再添加一組雙引號進去,比如你想說 "I "understand" joe.",Python 就會認為 "understand" 前后的兩個引號是字符串的邊界,從而把字符串弄錯。你需要一種方法告訴 python 字符串里邊的雙引號是字符串而不是真正的雙引號。

要解決這個問題,你需要將雙引號和單引號轉(zhuǎn)義,讓 Python 將引號也包含到字符串里邊去。這里有一個例子:

"I am 6'2\" tall."  # 將字符串中的雙引號轉(zhuǎn)義
'I am 6\'2" tall.'  # 將字符串中的單引號轉(zhuǎn)義

第二種方法是使用“三引號(triple-quotes)”,也就是 """,你可以在一組三引號之間放入任意多行的文字。接下來你將看到用法。

tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."

fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""

print tabby_cat
print persian_cat
print backslash_cat
print fat_cat

你看到的結(jié)果

注意你打印出來的制表符,這節(jié)練習(xí)中的文字間隔對于答案的正確性是很重要的。

$ python ex10.py
        I'm tabbed in.
I'm split
on a line.
I'm \ a \ cat.

I'll do a list:
        * Cat food
        * Fishies
        * Catnip
        * Grass

轉(zhuǎn)義序列

http://wiki.jikexueyuan.com/project/learn-python-hard-way/images/5.jpg" alt="" />

這里有一小段有意思的代碼,嘗試說明它們實現(xiàn)了什么功能:

while True:
    for i in ["/","-","|","\\","|"]:
        print "%s\r" % i,

附加題

1.通過把它們寫在卡片上記住所有的轉(zhuǎn)義序列。 2.使用'''(三個單引號)取代三個雙引號,看看效果是不是一樣的? 3.結(jié)合轉(zhuǎn)義序列和格式字符串創(chuàng)建一個更復(fù)雜的格式。 4.記得 %r 格式化字符串嗎?使用 %r 搭配單引號和雙引號轉(zhuǎn)義字符打印一些字符串出來。 將 %r 和 %s 比較一下。 注意到了嗎?%r 打印出來的是你寫在腳本里的內(nèi)容,而 %s 打印的是你應(yīng)該看到的內(nèi)容。

常見問題

Q:如果我想把所有的月份寫在新的一行上,應(yīng)該怎么做?

像這樣寫就可以: "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"

Q: 我還沒有完全弄明白最后一句代碼,我應(yīng)該繼續(xù)研究嗎?

當然要繼續(xù)。把每次練習(xí)題中你不明白的地方記下來。當你完成更多的練習(xí)的時候,定期檢查你的筆記,看看你是否可以明白筆記中的內(nèi)容。有時候你可能需要回去看看之前做過的練習(xí),并且重復(fù)的完成它們。

Q: 是什么讓\不同于其他的轉(zhuǎn)義字符?

這是一種簡單的寫出 ()字符的方法. 自己想想為什么我們需要\

Q:為什么我寫//或者/n 的時候,代碼沒有生效。

因為你用的是/ 而不是.這兩個是不同的字符串,他們的作用也是不一樣的。

Q:當我使用%r 格式的時候,轉(zhuǎn)義字符都沒有生效。

因為%r 打印出來的是你寫在腳本里的內(nèi)容, 這當然也會包含原始的轉(zhuǎn)移序列的字符??梢允褂?s。一定要記?。?r 是調(diào)試用的,而%s 才是顯示輸出用的。

Q:我沒有明白附加題 3.你所說的“結(jié)合”轉(zhuǎn)義序列和格式是什么意思?

你需要明白一點,所有的這些練習(xí)題,都可以結(jié)合起來解決一些難題。這節(jié)練習(xí)帶你了解了格式化字符串,你可以結(jié)合使用格式化字符串和轉(zhuǎn)義字符寫一些新的代碼。

Q: ''' 和"""哪個更好?

這個只依賴于你的代碼風(fēng)格。 現(xiàn)在可以使用''' (三個單引號),但是也要做好準備別人都在用的,感覺更好的方式。