1. 將浮點數四舍五入:round(1.7333)
2. 格式化字符:%s %d %r
%r和%s有什么不同? %r用來做debug比較好,因為它會顯示變量的原始數據(raw data),而 其它的符號則是用來向用戶顯示輸出的。記住:%r用作debug,%s用作顯示。
使用了%r后轉義序列都不靈了。因為%r打印出的是你寫到代碼里的原始字符串,其中會包含原始的轉義字符。
3. 轉義序列:
\t 橫向跳到下一制表符位置
\r 回車,將當前位置移到本行開頭
\n 換行(還有一種將字符串擴展到多行的方法是使用三引號""",可以在一組三引號之間放入任意多行的文字)
特殊的轉義序列:雙反斜杠\\ 這兩個字符組合會打印出一個反斜杠來。
對單引號和雙引號轉義:
“I am 6'2\" tall.” # 用 \" 將字符串中的雙引號轉義 6‘2“
'I am 6\'2" tall.' # 用 \' 將字符串中的單引號轉義 6’2”
4. 字符串要加引號;變量不加引號
5. 在print語句后面加個逗號,這樣print就不會輸出新行符而結束這一行跑到下一行去了。
print "How old are you?",
age = raw_input()
加逗號后,運行結果為在一行:How old are you? 27
不加逗號,運行結果為在兩行:How old are you?
27
6. raw_input()和input()
raw_input() 用來獲取控制台的輸入,將所有輸入作為字符串看待,返回字符串類型。
注意:input() 和 raw_input() 這兩個函數均能接收字符串 ,但 raw_input() 直接讀取控制台的輸入(任何類型的輸入它都可以接收)。而對於 input() ,它希望能夠讀取一個合法的 python 表達式,即你輸入字符串的時候必須使用引號將它括起來,否則它會引發一個 SyntaxError 。input()在對待純數字輸入時具有自己的特性,它返回所輸入的數字的類型(int, float)(比如:input(1 + 3)會返回int型的4)。
input()會把你輸入的東西當做python代碼進行處理,這么做會有安全問題。除非對 input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互。
注意:python3 里 input() 默認接收到的是 str 類型。
x = int(raw_input()) 會把用戶輸入的字符串用int()轉換成整數
raw_input()括號里可以放入提示信息 y = raw_input("Name?")
7. python程序員風格:每行不多於80個字符
8. pydoc
pydoc是python自帶的模塊,主要用於從python模塊中自動生成文檔,這些文檔可以基於文本呈現,也可以生成web頁面,還可以在服務器上以瀏覽器方式呈現。
Windows下:
D:\>python -m pydoc <modulename> # 比如說: python -m pydoc raw_input
-m參數:Python以腳本的方法運行模塊
Linux/Unix下:
$ pydoc <modulename> # 比如說: pydoc raw_input
輸入q退出pydoc
9. 我們把導入(import)進來的功能叫做模組(modules)。
from sys import argv
這句話的意思是從sys代碼庫里取出argv這個模組。
argv是“參數變量”,包含了你傳遞給python的參數。
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
第二個語句是將argv解包,將所有的參數依次賦予左邊的變量名:script, first, second, third。
需用命令行執行,注意必須傳遞三個參數:

argv和raw_input()有什么不同?
不同點在於用戶輸入的時機。如果參數是在用戶執行命令時就要輸入,那就是argv;如果是在命令行參數是字符串。argv和raw_input()不能合起來用。
from os.path import exists
exists命令將文件名字符串作為參數,如果文件存在返回True,不存在返回False。
print "Does the output file exist? %r" % exists(to_file)
10. 讀取文件
txt = open("文件名")
print txt.read()
從open獲得的東西是一個叫做“file object”的東西,可以想象成一個磁帶機或者DVD機。你可以隨意訪問它的任意位置,並且去讀取這些內容,不過這個object本身並不是它的內容。這個“file object”本身也支持一些命令。它接受命令的方式是使用句點".",緊跟着你的命令,然后是類似open和raw_input一樣的參數。
open對於文件的寫入操作很謹慎,只有特別指定后才會進行寫入操作。
如:target.open(filename, 'w')
'w'只是一個特殊字符串,用來表示文件的訪問模式,除此還有‘r’表示讀取,‘a’表示追加。
如果只寫open(filename)那就使用'r'模式打開,這是open()函數的默認工作方式。
還有哪些修飾符可以用來控制文件訪問?
最重要的是+修飾符,寫法就是"w+','r+','a+',這樣的話文件將以同時讀寫的方式打開,而對於文件位置的使用也有些不同。
11. 在命令行下輸入python代碼:
在命令行輸入python然后敲回車,然后你就在python環境中了。退出輸入quit()。
12. 文件相關的命令(方法/函數)
close-關閉文件。跟你編輯器的文件->保存..一個意思。
read-讀取文件內容。可以把結果賦給一個變量。
readline-讀取文本文件中的一行。通過掃描文件的每一個字節,直到找到一個\n為止,然后停止讀取,並返回此前文件內容。
truncate-清空文件,請小心使用該命令。
write(stuff)-將stuff寫入文件。需要接收一個字符串作為參數,從而將該字符串寫入文件。
f.seek(0)-f在這里是一個變量名,指的是一個文件。Python里的文件可以想象成老式磁帶機或者DVD播放機,它有一個用來讀取數據的“磁頭”,可以通過這個“磁頭”來操作文件。每次運行f.seek(0),就回到了文件的開始,而運行f.readline()則會讀取文件的一行,然后“磁頭”移動到\n后面。seek()函數的處理對象是字節而非行,seek(0)只手轉到文件的0byte,也就是第一個byte的位置。
13. windows下打印文件內容到屏幕上的命令是type。

14. len()函數:以數字形式返回你傳遞的字符串的長度。
15. def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
*argv中*的功能是告訴python讓它把函數的所有參數都接受進來,然后放到名字叫args的列表去。和argv差不多,只不過前者是用在函數上面。沒什么特殊情況一般不用。
16. x += y等同於x = x + y
17. 關閉編譯器:
Windows下CTRL-Z
Linux下CTRL-D
18. 執行help(module name or function name) :可以得到模組幫助文檔,指定義函數時放在"""之間的東西,被稱作文檔注解。
19. import ex和from ex import *:
前者需要重復輸入ex.,后者不需要輸入ex.,直接輸入函數名即可。
20. 怎樣判斷一個數字處於某個值域中?
1 < x < 10 或者 x in range(1, 10)
21. 存放循環的結果最好的方法是使用列表list,它是一個按順序存放東西的容器:
如何創建列表?
hairs = ['brown', 'blond', 'red']
eyes = ['brown', 'blue', 'green']
weight = [1, 2, 3, 4]
二維列表:[[1, 2, 3], [4, 5, 6]]
列表支持哪些操作?
常見列表對象操作方法:
list.append(x)
把一個元素添加到鏈表的結尾,相當於 a[len(a):] = [x] 。
list.extend(L)
將一個給定列表中的所有元素都添加到另一個列表中,相當於 a[len(a):] = L 。
list.insert(i, x)
在指定位置插入一個元素。第一個參數是准備插入到其前面的那個元素的索引,例如 a.insert(0, x) 會插入到整個鏈表之前,而 a.insert(len(a), x) 相當於 a.append(x) 。
list.remove(x)
刪除鏈表中值為 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。
list.pop([i])
從鏈表的指定位置刪除元素,並將其返回。如果沒有指定索引, a.pop() 返回最后一個元素。元素隨即從鏈表中被刪除。(參數可選)
list.index(x)
返回鏈表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤。
list.count(x)
返回 x 在鏈表中出現的次數。
list.sort()
對鏈表中的元素就地進行排序。
list.reverse()
就地倒排鏈表中的元素。
例:
代碼如下:
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print a.count(333), a.count(66.25), a.count(‘x')
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a.index(333)
2
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
列表索引:
從0開始
22. range()函數:
range(1, 5) #代表從1到5(不含5)[1, 2, 3, 4]
range(1, 5, 2) #代表從1到5, 間隔2(不包含5)[1, 3]
range(5) #代表從0到5(不含5)[0, 1, 2, 3, 4, 5]
23. while循環:一直執行直到False
while True可以創建一個無限循環
24. 中斷程序:
from sys import exit
exit(0)
25. if語句的規則:
1. 每個if語句必須包含一個else。
2. 如果這個else永遠都不應該被執行到,因為它本身沒有任何意義,那你必須在else后面使用一個叫做die的函數,讓它打印出錯誤信息並且死給你看。
3. if語句的嵌套不要超過2層,最好盡量保持只有1層。這意味着如果你在if里邊又有了一個if,那你就需要把第二個if移到另一個函數里面。
4. 將if語句當做段落來對待,其中的每一個if,elif,else組合就跟一個段落的句子組合一樣,在這種組合的最前面和最后面留一個空行以作區分。
5. 你的布爾測試應該很簡單,如果它們很復雜的話,你需要將它們的運算事先放到一個變量里,並且為變量取一個好名字。
26. 循環的規則:
1. 只有在循環永不停止時使用“while循環”,這意味着你可能永遠都用不到.
2. 其他類型的循環都使用“for”循環,尤其是在循環的對象數量固定或者有限的情況下。
