博客內容:
1、基礎語法
2、運算符
3、流程控制
4、列表、元組、字典、集合
5、字符串
6、文件操作
一、基礎語法
1、標識符
命名規則:
- 以字母、下划線開頭
- 其他部分由字母、數字或下划線組成
- 不能使用關鍵字命名;
- 常量一般全部是大寫;
- 命名要有意義,不宜過長。
定義:可以改變的量:
age=19 #定義一個名為age的量,他的值為19
常量:不可以改變的量(命名字母全大寫)
2、注釋
Python中單行注釋以 # 開頭
行注釋可以用多個 # 號,還有 ''' 和 """
注釋# 單行注釋 ''' 多行注釋 ''' """ 多行注釋 """
3、行與縮進
python縮進來表示代碼塊,不使用大括號 {} 。
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。
4、數字(Number)類型
python中數字有四種類型:整數、布爾型、浮點數和復數。
- int (整數), 如 1
- bool (布爾), 如 True
- float (浮點數), 如 1.23、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 是數字表達式。
5、字符串(String)
"oeasys"
- python中單引號和雙引號使用完全相同。
- 使用三引號('''或""")可以指定一個多行字符串
- 轉義符 '\' 反斜杠可以用來轉義
- Python中的字符串不能改變
- 字符串可以用 + 運算符連接在一起,用 * 運算符重復以及格式化輸出
ps:格式化輸出
字符串 %s;整數 %d、;浮點數%f
name = "oeasys" print ("i am %s " ,% name) #輸出: i am oeasys
6、布爾值
一個True(真)
一個False(假)
7、用戶輸入與輸出
input() 等待用戶輸入
print() 打印輸出
二、運算符
1、Python算術運算符
2、Python比較運算符
3、Python賦值運算符
4、Python位運算符
5、Python邏輯運算符
6、Python成員運算符
7、Python身份運算符
8、Python運算符優先級
三、流程控制
1、條件控制
if-elif-else1 if 如果: # 如果為真,執行如果代碼 2 執行如果代碼 3 elif 否則如果: # 否則如果為真,執行否則如果代碼 4 執行否則如果代碼 5 else: # 前面都不為真,執行否則代碼 6 執行否則代碼
三元運算1 result = 值1 if 條件 else 值2 2 3 # 如果條件成立,那么將 “值1” 賦值給result變量,否則,將“值2”賦值給result變量
2、循環控制
1、while 循環
while 判斷條件: 語句
2、while 循環使用 else 語句
while 如果為真: # 如果為真,執行循環語句 執行循環語句 else: #while循環為假,執行否則語句 執行否則語句
3、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]
enumerate:枚舉,對於一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。

1 li = ['張三','李四','王五','小明','18'] 2 for i in enumerate(li): 3 print(i) 4 for index,name in enumerate(li,1): 5 print(index,name) 6 for index, name in enumerate(li, 100): # 起始位置默認是0,可更改 7 print(index, name)
4、break和continue語句
- break 語句可以跳出 for 和 while 的循環體
- continue語句被用來告訴Python跳過當前循環塊中的剩余語句,然后繼續進行下一輪循環。
5、pass 語句
Python pass是空語句,是為了保持程序結構的完整性。
pass 不做任何事情,一般用做占位語句
四、列表、元組、字典、集合
1、列表
創建列表
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
2、元組
Python 的元組與列表類似,元組的元素不能修改,又叫只讀列表。
num = ("1","2","3")
只有2個方法:一個是count,一個是index
3、字典
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(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() 隨機返回並刪除字典中的一對鍵和值。 |
4、集合
集合是一個無序的,不重復的數據組合,它的主要作用如下:
- 去重,把一個列表變成集合,就自動去重了
- 關系測試,測試兩組數據之前的交集、差集、並集等關系

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”的一個淺復制
五、字符串
1、Python轉義字符
轉義字符 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜杠符號 |
\' | 單引號 |
\" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向制表符 |
\t | 橫向制表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數,yy代表的字符,例如:\o12代表換行 |
\xyy | 十六進制數,yy代表的字符,例如:\x0a代表換行 |
\other | 其它的字符以普通格式輸出 |
2、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
|
% | 格式字符串 |
3、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 是小數點后的位數(如果可用的話) |
4、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 |
六、文件操作
1、初識⽂件操作
使⽤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. 圖像. 視頻等信息的時候就需要⽤到。因為這種數據是沒辦法直接顯⽰出來的. ⽂件上傳下載的時候還會⽤到. 以及直播. 實際上都是這種數據.
2、絕對路徑和相對路徑
1. 絕對路徑:從磁盤根⽬錄開始⼀直到⽂件名.
2. 相對路徑:同⼀個⽂件夾下的⽂件. 相對於當前這個程序所在的⽂件夾⽽⾔. 如果在同 ⼀個⽂件夾中. 則相對路徑就是這個⽂件名. 如果在上⼀層⽂件夾. 則要../
3、只讀(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. 因為這種數據是沒辦法直接顯⽰出來的. 在后⾯我們⽂件上傳下載的時候還會⽤到. 還有.我們看的直播. 實際上都是這種數據.
4、只寫(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()
5、追加(a, ab)

1 f = open("文件", mode="a", encoding="utf-8") 2 f.write("oeasys.cn") 3 f.flush() 4 f.close()
6、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 正常的讀取之后, 寫在結尾
7、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()
8、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()
9、讀取⽂件的⽅法:

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()
10、其他操作⽅法
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+模式下. 如果讀取了內容. 不論讀取內容多少. 光標顯⽰的是多少. 再寫入 或者操作⽂件的時候都是在結尾進⾏的操作.
所以如果想做截斷操作. 記住了. 要先挪動光標. 挪動到你想要截斷的位置. 然后再進⾏截斷