博客內容:html
一、基礎語法python
二、運算符git
三、流程控制api
四、列表、元組、字典、集合數組
五、字符串app
六、文件操做ide
命名規則:函數
- 以字母、下劃線開頭
- 其餘部分由字母、數字或下劃線組成
- 不能使用關鍵字命名;
- 常量通常所有是大寫;
- 命名要有意義,不宜過長。
定義:能夠改變的量:post
age=19 #定義一個名爲age的量,他的值爲19
常量:不能夠改變的量(命名字母全大寫)測試
Python中單行註釋以 # 開頭
行註釋能夠用多個 # 號,還有 ''' 和 """
註釋# 單行註釋 ''' 多行註釋 ''' """ 多行註釋 """
python縮進來表示代碼塊,不使用大括號 {} 。
縮進的空格數是可變的,可是同一個代碼塊的語句必須包含相同的縮進空格數。
python中數字有四種類型:整數、布爾型、浮點數和複數。
- int (整數), 如 1
- bool (布爾), 如 True
- float (浮點數), 如 1.2三、3E-2
- complex (複數), 如 1 + 2j、 1.1 + 2.2j
age = 19
ps:類型的轉換
- int(x) 將x轉換爲一個整數。
- float(x) 將x轉換到一個浮點數。
- complex(x) 將x轉換到一個複數,實數部分爲 x,虛數部分爲 0。
- complex(x, y) 將 x 和 y 轉換到一個複數,實數部分爲 x,虛數部分爲 y。x 和 y 是數字表達式。
"oeasys"
- python中單引號和雙引號使用徹底相同。
- 使用三引號('''或""")能夠指定一個多行字符串
- 轉義符 '\' 反斜槓能夠用來轉義
- Python中的字符串不能改變
- 字符串能夠用 + 運算符鏈接在一塊兒,用 * 運算符重複以及格式化輸出
ps:格式化輸出
字符串 %s;整數 %d、;浮點數%f
name = "oeasys" print ("i am %s " ,% name) #輸出: i am oeasys
一個True(真)
一個False(假)
input() 等待用戶輸入
print() 打印輸出
if-elif-else1 if 若是: # 若是爲真,執行若是代碼 2 執行若是代碼 3 elif 不然若是: # 不然若是爲真,執行不然若是代碼 4 執行不然若是代碼 5 else: # 前面都不爲真,執行不然代碼 6 執行不然代碼
三元運算1 result = 值1 if 條件 else 值2 2 3 # 若是條件成立,那麼將 「值1」 賦值給result變量,不然,將「值2」賦值給result變量
一、while 循環
while 判斷條件: 語句
二、while 循環使用 else 語句
while 若是爲真: # 若是爲真,執行循環語句 執行循環語句 else: #while循環爲假,執行不然語句 執行不然語句
三、for 語句
for i in range(10):
執行語句
ps:range()函數
內置range()函數,它會生成數列
1 for i in range(5): 2 print(i) 3 ... 4 0 5 1 6 2 7 3 8 4
使用range指定區間的值
1 for i in range(5,9) : 2 print(i) 3 4 5 5 6 6 7 7 8 8
range以指定數字開始並指定不一樣的增量(甚至能夠是負數,有時這也叫作'步長')
1 for i in range(0, 10, 3) : 2 print(i) 3 4 5 0 6 3 7 6 8 9
您能夠結合range()和len()函數以遍歷一個序列的索引
1 a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ'] 2 for i in range(len(a)): 3 ... print(i, a[i]) 4 ... 5 0 Google 6 1 Baidu 7 2 Runoob 8 3 Taobao 9 4 QQ
range()函數來建立一個列表
1 >>>list(range(5)) 2 [0, 1, 2, 3, 4]
四、break和continue語句
- break 語句能夠跳出 for 和 while 的循環體
- continue語句被用來告訴Python跳過當前循環塊中的剩餘語句,而後繼續進行下一輪循環。
五、pass 語句
Python pass是空語句,是爲了保持程序結構的完整性。
pass 不作任何事情,通常用作佔位語句
建立列表
names = ['張三',"李四",'王五']經過下標訪問列表中的元素,下標從0開始計數
>>> names[0] '張三' >>> names[2] '王五' >>> names[-1] '王五' >>> names[-2] #還能夠倒着取 '李四'
1 >>> num = ["1","2","3","4","5","6"] 2 >>> num[1:4] #取下標1至下標4之間的數字,包括1,不包括4 3 ['2', '3', '4'] 4 >>> num[1:-1] #取下標1至-1的值,不包括-1 5 ['2', '3', '4', '5'] 6 >>> num[0:3] 7 ['1', '2', '3'] 8 >>> num[:3] #若是是從頭開始取,0能夠忽略,跟上句效果同樣 9 ['1', '2', '3'] 10 >>> num[3:] #若是想取最後一個,必須不能寫-1,只能這麼寫 11 ['4', '5', '6'] 12 >>> num[3:-1] #這樣-1就不會被包含了 13 ['4', '5'] 14 >>> num[0::2] #後面的2是表明,每隔一個元素,就取一個 15 ['1', '3', '5'] 16 >>> num[::2] #和上句效果同樣 17 ['1', '3', '5']
1 num = ['1', '2', '3', '4', '5', '6'] 2 >>> num.append("7") 3 >>> num 4 ['1', '2', '3', '4', '5', '6', '7']
1 >>> num = ['1', '2', '3', '4', '5', '6', '7'] 2 >>> num.insert(2,"強行從3前面插入") 3 >>> num 4 ['1', '2', '強行從3前面插入', '3', '4', '5', '6', '7']
1 >>> num = ['1', '2', '3', '4', '5'] 2 >>> num[2] = "new" 3 >>> num 4 ['1', '2', 'new', '3', '4', '5']
1 >>> mun = ['1', '2', '3', '4', '5', '6', '7'] 2 >>>del num[2] 3 >>> num 4 num = ['1', '2', '3', '4', '5', '6', '7'] 5 6 7 8 >>> num.remove("4") #刪除指定元素 9 >>> num 10 ['1', '2', '5', '6', '7'] 11 >>> num.pop() #刪除列表最後一個值 12 '7' 13 >>> nun 14 ['1', '2', '5', '6']
1 >>> num = ['1', '2', '3', '4', '5'] 2 >>> num1 = [1,2,3] 3 >>> num.extend(num1) 4 >>> num 5 ['1', '2', '3', '4', '5', 1, 2, 3]
1 >>> num = ['1', '2', '3', '4', '5', 1, 2, 3] 2 3 >>> num_copy = num.copy() 4 >>> num_copy 5 ['1', '2', '3', '4', '5', 1, 2, 3]
1 >>> num = ['1', '2', '3', '4', '5','2'] 2 >>> num.count("2") 3 2
1 >>> num = ['4', '2', '1','9', '7', '5'] 2 >>> num.sort() 3 >>> num 4 ['1', '2', '4', '5', '7', '9']
1 >>> num = ['4', '2', '1','9', '7', '5'] 2 >>> num.reverse() 3 >>> num 4 ['5', '7', '9', '1', '2', '4']
1 >>> num = ['4', '2', '1','9', '7', '5'] 2 >>> num.index('9') 3 3
Python 的元組與列表相似,元組的元素不能修改,又叫只讀列表。
num = ("1","2","3")
只有2個方法:一個是count,一個是index
字典是另外一種可變容器模型,且可存儲任意類型對象。
字典的每一個鍵值(key=>value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中
字典是無序的,key是惟一的
1 names = { 2 'name1': "zhangsan", 3 'name2': "李四", 4 'name3': "王五", 5 }
1 names = { 2 'name1': "zhangsan", 3 'name2': "李四", 4 'name3': "王五", 5 } 6 names["name4"] = "wangwu"
1 name['name2'] = "張三"
info.pop("name2") #刪除方法1 del info['name3'] #刪除方法2 info.popitem() #隨機刪除
1 >>> "name1" in names #查找1 2 True 3 >>> names.get("name2") #獲取 4 5 >>> names["name9"] #獲取,可是若是key不存在,就報錯
1 values() 函數以列表返回字典中的全部值 2 3 keys() 函數以列表返回一個字典全部的鍵 4 5 setdefault(key,default) 函數, 若是鍵不存在於字典中,將會添加鍵並將值設爲默認值 6 key -- 查找的鍵值。 7 default -- 鍵不存在時,設置的默認鍵值。 8 9 update() 函數把字典dict2的鍵/值對更新到dict裏。 10 11 items() 函數以列表返回可遍歷的(鍵, 值) 元組數組 12 13 has_key() 函數用於判斷鍵是否存在於字典中,若是鍵在字典dict裏返回true,不然返回false。 14 15 fromkeys() 函數用於建立一個新字典,以序列 seq 中元素作字典的鍵,value 爲字典全部鍵對應的初始值。 16 17 copy() 函數返回一個字典的淺複製。
序號 | 函數及描述 |
---|---|
1 | cmp(dict1, dict2) 比較兩個字典元素。 |
2 | len(dict) 計算字典元素個數,即鍵的總數。 |
3 | str(dict) 輸出字典可打印的字符串表示。 |
4 | type(variable) 返回輸入的變量類型,若是變量是字典就返回字典類型。 |
序號 | 函數及描述 |
---|---|
1 | dict.clear() 刪除字典內全部元素 |
2 | dict.copy() 返回一個字典的淺複製 |
3 | dict.fromkeys(seq[, val]) 建立一個新字典,以序列 seq 中元素作字典的鍵,val 爲字典全部鍵對應的初始值 |
4 | dict.get(key, default=None) 返回指定鍵的值,若是值不在字典中返回default值 |
5 | dict.has_key(key) 若是鍵在字典dict裏返回true,不然返回false |
6 | dict.items() 以列表返回可遍歷的(鍵, 值) 元組數組 |
7 | dict.keys() 以列表返回一個字典全部的鍵 |
8 | dict.setdefault(key, default=None) 和get()相似, 但若是鍵不存在於字典中,將會添加鍵並將值設爲default |
9 | dict.update(dict2) 把字典dict2的鍵/值對更新到dict裏 |
10 | dict.values() 以列表返回字典中的全部值 |
11 | pop(key[,default]) 刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。 不然,返回default值。 |
12 | popitem() 隨機返回並刪除字典中的一對鍵和值。 |
集合是一個無序的,不重複的數據組合,它的主要做用以下:
1 s = set([3,5,9,10]) #建立一個數值集合 2 3 t = set("Hello") #建立一個惟一字符的集合 4 5 6 a = t | s # t 和 s的並集 7 8 b = t & s # t 和 s的交集 9 10 c = t – s # 求差集(項在t中,但不在s中) 11 12 d = t ^ s # 對稱差集(項在t或s中,但不會同時出如今兩者中) 13 14 15 16 基本操做: 17 18 t.add('x') # 添加一項 19 20 s.update([10,37,42]) # 在s中添加多項 21 22 23 24 使用remove()能夠刪除一項: 25 26 t.remove('H') 27 28 29 len(s) 30 set 的長度 31 32 x in s 33 測試 x 是不是 s 的成員 34 35 x not in s 36 測試 x 是否不是 s 的成員 37 38 s.issubset(t) 39 s <= t 40 測試是否 s 中的每個元素都在 t 中 41 42 s.issuperset(t) 43 s >= t 44 測試是否 t 中的每個元素都在 s 中 45 46 s.union(t) 47 s | t 48 返回一個新的 set 包含 s 和 t 中的每個元素 49 50 s.intersection(t) 51 s & t 52 返回一個新的 set 包含 s 和 t 中的公共元素 53 54 s.difference(t) 55 s - t 56 返回一個新的 set 包含 s 中有可是 t 中沒有的元素 57 58 s.symmetric_difference(t) 59 s ^ t 60 返回一個新的 set 包含 s 和 t 中不重複的元素 61 62 s.copy() 63 返回 set 「s」的一個淺複製
一、Python轉義字符
轉義字符 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜槓符號 |
\' | 單引號 |
\" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向製表符 |
\t | 橫向製表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數,yy表明的字符,例如:\o12表明換行 |
\xyy | 十六進制數,yy表明的字符,例如:\x0a表明換行 |
\other | 其它的字符以普通格式輸出 |
二、Python字符串運算符
操做符 | 描述 | 實例 |
---|---|---|
+ | 字符串鏈接 |
>>>a + b 'HelloPython'
|
* | 重複輸出字符串 |
>>>a * 2 'HelloHello'
|
[] | 經過索引獲取字符串中字符 |
>>>a[1] 'e'
|
[ : ] | 截取字符串中的一部分 |
>>>a[1:4] 'ell'
|
in | 成員運算符 - 若是字符串中包含給定的字符返回 True |
>>>"H" in a True
|
not in | 成員運算符 - 若是字符串中不包含給定的字符返回 True |
>>>"M" not in a True
|
r/R | 原始字符串 - 原始字符串:全部的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母"r"(能夠大小寫)之外,與普通字符串有着幾乎徹底相同的語法。 |
>>>print r'\n' \n >>> print R'\n' \n
|
% | 格式字符串 |
三、Python 字符串格式化
python 字符串格式化符號:
符 號 | 描述 |
---|---|
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數 |
%u | 格式化無符號整型 |
%o | 格式化無符號八進制數 |
%x | 格式化無符號十六進制數 |
%X | 格式化無符號十六進制數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 做用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %F 和 %E 的簡寫 |
%p | 用十六進制數格式化變量的地址 |
格式化操做符輔助指令:
符號 | 功能 |
---|---|
* | 定義寬度或者小數點精度 |
- | 用作左對齊 |
+ | 在正數前面顯示加號( + ) |
<sp> | 在正數前面顯示空格 |
# | 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'仍是'X') |
0 | 顯示的數字前面填充'0'而不是默認的空格 |
% | '%%'輸出一個單一的'%' |
(var) | 映射變量(字典參數) |
m.n. | m 是顯示的最小總寬度,n 是小數點後的位數(若是可用的話) |
四、python的字符串內建函數
方法 | 描述 |
---|---|
把字符串的第一個字符大寫 |
|
返回一個原字符串居中,並使用空格填充至長度 width 的新字符串 |
|
返回 str 在 string 裏面出現的次數,若是 beg 或者 end 指定則返回指定範圍內 str 出現的次數 |
|
以 encoding 指定的編碼格式解碼 string,若是出錯默認報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace' |
|
以 encoding 指定的編碼格式編碼 string,若是出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
|
檢查字符串是否以 obj 結束,若是beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,若是是,返回 True,不然返回 False. |
|
把字符串 string 中的 tab 符號轉爲空格,tab 符號默認的空格數是 8。 |
|
檢測 str 是否包含在 string 中,若是 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,若是是返回開始的索引值,不然返回-1 |
|
格式化字符串 |
|
跟find()方法同樣,只不過若是str不在 string中會報一個異常. |
|
若是 string 至少有一個字符而且全部字符都是字母或數字則返 回 True,不然返回 False |
|
若是 string 至少有一個字符而且全部字符都是字母則返回 True, 不然返回 False |
|
若是 string 只包含十進制數字則返回 True 不然返回 False. |
|
若是 string 只包含數字則返回 True 不然返回 False. |
|
若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True,不然返回 False |
|
若是 string 中只包含數字字符,則返回 True,不然返回 False |
|
若是 string 中只包含空格,則返回 True,不然返回 False. |
|
若是 string 是標題化的(見 title())則返回 True,不然返回 False |
|
若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是大寫,則返回 True,不然返回 False |
|
以 string 做爲分隔符,將 seq 中全部的元素(的字符串表示)合併爲一個新的字符串 |
|
返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串 |
|
轉換 string 中全部大寫字符爲小寫. |
|
截掉 string 左邊的空格 |
|
maketrans() 方法用於建立字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示須要轉換的字符,第二個參數也是字符串表示轉換的目標。 |
|
返回字符串 str 中最大的字母。 |
|
返回字符串 str 中最小的字母。 |
|
有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),若是 string 中不包含str 則 string_pre_str == string. |
|
把 string 中的 str1 替換成 str2,若是 num 指定,則替換不超過 num 次. |
|
相似於 find()函數,不過是從右邊開始查找. |
|
相似於 index(),不過是從右邊開始. |
|
返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串 |
|
相似於 partition()函數,不過是從右邊開始查找 |
|
刪除 string 字符串末尾的空格. |
|
以 str 爲分隔符切片 string,若是 num 有指定值,則僅分隔 num+ 個子字符串 |
|
按照行('\r', '\r\n', \n')分隔,返回一個包含各行做爲元素的列表,若是參數 keepends 爲 False,不包含換行符,若是爲 True,則保留換行符。 |
|
檢查字符串是不是以 obj 開頭,是則返回 True,不然返回 False。若是beg 和 end 指定值,則在指定範圍內檢查. |
|
在 string 上執行 lstrip()和 rstrip() |
|
翻轉 string 中的大小寫 |
|
返回"標題化"的 string,就是說全部單詞都是以大寫開始,其他字母均爲小寫(見 istitle()) |
|
根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 del 參數中 |
|
轉換 string 中的小寫字母爲大寫 |
|
返回長度爲 width 的字符串,原字符串 string 右對齊,前面填充0 |
一、初識⽂件操做
使⽤open()函數來打開⼀個⽂件:open(文件名(路徑),mode=「打開文件的方式」,encoding=「字符集utf-8」)
打開⽂件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默認使⽤的是r(只讀)模式
rb, wb, ab, 用來讀取非⽂本⽂件的時候. 好比讀取MP3. 圖像. 視頻等信息的時候就須要⽤到。由於這種數據是沒辦法直接顯⽰出來的. ⽂件上傳下載的時候還會⽤到. 以及直播. 實際上都是這種數據.
二、絕對路徑和相對路徑
1. 絕對路徑:從磁盤根⽬錄開始⼀直到⽂件名.
2. 相對路徑:同⼀個⽂件夾下的⽂件. 相對於當前這個程序所在的⽂件夾⽽⾔. 若是在同 ⼀個⽂件夾中. 則相對路徑就是這個⽂件名. 若是在上⼀層⽂件夾. 則要../
三、只讀(r, rb)
1 f = open("文件路徑.txt",mode="r", encoding="utf-8") # 打開文件 2 content = f.read() # 讀取內容,文件大時不要用 3 print(content) # 打印讀取的內容 4 f.close() # 關閉文件 5 6 須要注意encoding表⽰編碼集. 根據⽂件的實際保存編碼進⾏獲取數據, 對於咱們⽽⾔. 更多的是utf-8.
1 f = open("文件名.txt",mode="rb" ) 2 content = f.read() 3 print(content) 4 f.close() 5 6 rb的做⽤: 在讀取非⽂本⽂件的時候. 好比讀取MP3. 圖像. 視頻等信息的時候就須要⽤到 7 rb. 由於這種數據是沒辦法直接顯⽰出來的. 在後⾯咱們⽂件上傳下載的時候還會⽤到. 還有.咱們看的直播. 實際上都是這種數據.
四、只寫(w, wb)
1 f = open("文件", mode="w", encoding="utf-8") 2 f.write("oeasys.cn") 3 f.flush() # 刷新 4 f.close()
1 f = open("文件", mode="wb") 2 f.write("oeasys.cn".encode("utf-8")) 3 f.flush() 4 f.close()
五、追加(a, ab)
1 f = open("文件", mode="a", encoding="utf-8") 2 f.write("oeasys.cn") 3 f.flush() 4 f.close()
六、r+讀寫
1 f = open("文件", mode="r+", encoding="utf-8") 2 content = f.read() 3 f.write("oeasys.cn") 4 print(content) 5 f.flush() 6 f.close() 7 結果: 8 正常的讀取以後, 寫在結尾
七、w+寫讀
1 f = open("文件", mode="w+", encoding="utf-8") 2 f.write("oeasys.cn") 3 content = f.read() 4 print(content) 5 f.flush() 6 f.close()
八、a+寫讀(追加寫讀)
1 f = open("文件", mode="a+", encoding="utf-8") 2 f.write("oeasys.cn") 3 content = f.read() 4 print(content) 5 f.flush() 6 f.close()
九、讀取⽂件的⽅法:
1 f = open("文件路徑", mode="r", encoding="utf-8") 2 content = f.read() 3 print(content)
1 f = open("文件路徑", mode="r", encoding="utf-8") 2 content = f.readline() 3 content2 = f.readline() 4 content3 = f.readline() 5 content4 = f.readline() 6 content5 = f.readline()
1 f = open("文件", mode="r", encoding="utf-8") 2 for line in f: 3 print(line.strip())
注意: 讀取完的⽂件句柄⼀定要關閉 f.close()
十、其餘操做⽅法
1. seek(n) 光標移動到n位置, 注意, 移動的單位是byte. 因此若是是UTF-8的中⽂部分要 是3的倍數.
一般咱們使⽤seek都是移動到開頭或者結尾.
seek(偏移量,位置)
移動到開頭: seek(0)
移動到結尾: seek(0,2)
seek的第⼆個參數表⽰的是從哪一個位置進⾏偏移, 默認是0, 表 ⽰開頭, 1表⽰當前位置, 2表⽰結尾
2. tell()獲取到當前光標位置
print(f.tell())
3. truncate() 截斷⽂件
從開頭截斷到光標位置,刪掉光標後⾯的全部內容
若是給參數,從開頭截斷到參數位置
在r+模式下. 若是讀取了內容. 不論讀取內容多少. 光標顯⽰的是多少. 再寫入 或者操做⽂件的時候都是在結尾進⾏的操做.
因此若是想作截斷操做. 記住了. 要先挪動光標. 挪動到你想要截斷的位置. 而後再進⾏截斷