一、程式的基本格式1.1 縮排
1.使用tab製表符或空格表示縮排,預設為一個製表符或4個空格為一個層級。(編輯器可自動調整tab為四個空格)2.同一程式內縮排數量應保持一致。
age = int(input("請輸入您的年齡:"))if abs(age) >= 18: print("您已成年")else: print("您還是未成年")12345
1.2 大小寫
python區分大小寫,python和Python代表兩個物件。
1.3 註釋註釋表示該語句在程式執行時不被執行。單行註釋使用【# 註釋語句】,多行註釋採用【’’'註釋語句‘’‘】。
name = "傑尼龜"name = "水箭龜"Name = "皮卡丘"print(name) #結果為水箭龜print(Name) #結果為水卡丘'''python裡區分大小寫,變數命名時應注意使用'''12345678
1.4 行連線符及【;】的使用
python中一行程式碼過長時可在想換行處使用行連線符【\】,進行換行編寫。程式還是會認為它在同一行。
print("隨便打一串文\字做一下測試")12
如果想把幾行程式碼寫為一行,可用【;】進行連線。
num = 2 ; result = num + 3 print(result) 12
4.跳脫字元
Python 支援的跳脫字元
字元含義字元含義\換行符\ t製表符\ \反斜線\ b退格符\ n換行符\ r回車符\ ‘單引號\ “雙引號
二、程式的構成2.1 物件python中一切皆物件
1.每個物件皆有對應的標識(id)、型別(type)、值(value)。2.變數透過儲存物件ID對其進行引用。3.物件只能進行與其型別對應相關操作。
2.2 識別符號用於變數、函式、類、模組等的名稱
命名規則:
a.區分大小寫。如:zxl和Zxl是不同的;b.第一個字元必須是字母、下劃線。其後字元是字母、下劃線、數字;c.不能使用關鍵字,如:if、elif、or等;d.以雙下劃線開頭和結尾的名稱通常由特殊含義,儘量避免此種寫法。如:__init__是類的建構函式。
python保留字元(僅包含小寫字母部分)
andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield
特殊命名約定
型別規則舉例模組名、包名全小寫字母,儘量簡單,若多個單詞用下劃線連結math、time、os函式名全小寫字母,若多個單詞用下劃線連結say_hi、sum_num類名單詞首字母大寫,採用駝峰原則My_Name常量名python不支援常量。只能透過邏輯控制物件為一個常量,採用全大寫MY_NAME
2.3 變數(變數作用域:全域性變數、區域性變數詳見擴充部分)程式就是用來處理資料的,而變數就是用來引用資料的;python中的變數不需要指明型別,系統會自動識別。
變數的初始化(賦值)
利用【=】號進行賦值:變數名 = 表示式
a = "傑尼龜" #id = 1612667500272 type:strprint(id(a),type(a))12
python執行程式從上往下執行,如果後續程式碼中為變數重新指代了值,以前的那個值會被替換,並被python進行垃圾回收。
變數的賦值方式
鏈式賦值:將一個物件同時賦值給多個變數。變數1 = 變數2 = 物件1
a = b = "傑尼龜" print(a,b) #結果為傑尼龜 傑尼龜12
解包賦值解包賦值可使用列表、元組、字典。方便我們對多個變數進行賦值元組解包
(a , b , c) = (1 , 2 , 3) #等同於 a,b,c = 1,2,3print(a , b , c) #結果為1 2 312
列表解包
[a,b,c] = [[1,2],3,[4,5]]print(a) #結果為[1, 2]print(b) #結果為3print(c) #結果為[4, 5]1234
字典解包:字典解包時,預設是對鍵進行操作。如果想對值進行解包賦值,需使用values(),如果是想對鍵值對整體賦值,需使用items()(返回結果為元組型別)。
s = {"name":"傑尼龜","age":18,"color":"yellow"}a,b,c = sprint(a,b,c) #結果為name age colora,b,c = s.values()print(a,b,c) #結果為傑尼龜 18 yellowa,b,c = s.items()print(a,b,c) #結果為('name', '傑尼龜') ('age', 18) ('color', 'yellow')1234567
變數值互換
變數1,變數2 = 物件1 ,物件2變數1,變數2 = 變數2 , 變數1
a = b = "傑尼龜"del aprint(b) #結果為傑尼龜print(a) #丟擲異常:name 'a' is not defind1234
變數刪除後,變數指代的物件依然存在,但是沒有變數引用的物件會被python垃圾回收器回收,清除記憶體空間
2.5 程式的輸入與輸出輸入函式
python利用內建函式input()來獲取控制檯鍵盤輸入的內容,並將內容儲存於變數。
【變數 =input(“提示資訊”) 】
age = input("請輸入您的年齡:") print(type(age)) #結果為<class 'str'>12
獲取到的資料會儲存為字串型別
列印函式
python透過print()函式將程式執行結果輸出值控制端。
【print(想要輸出的結果,end = “任意字串”)】
age = input("請輸入您的年齡:") #輸入25print(type(age)) #結果為<class 'str'>print(age) #結果為25123
逗號後可不寫,不寫則為預設的end = “\n”
不換行列印
呼叫print()函式時預設結尾為換行符,可調整為其他字串,使函式進行不換行列印。
a , b = 1 , 2print(a,end="**") #結果為1**2(在同一行,不會換行)print(b) #如不加end=str,預設為end= "\n"123
三、基本資料型別3.1 布林型(bool)1.布林值的建立
布林型中只有True和False兩個值,表示真和假(注意大小寫);
2.布林值的運算a.作為布林值使用時通常搭配邏輯運算子與(and)或(or)非(not)進行使用。b.也可做為數字1和0使用(True為1,False為0)。
#and:一假返回假,or:一真返回真,not :返回相反值print(True and True) #結果為Trueprint(True and False) #結果為Falseprint(False and False) #結果為Falseprint(True or True) #結果為Trueprint(True or False) #結果為Trueprint(False or False) #結果為Falseprint(not False) #結果為Trueprint(not True) #結果為Falseprint(True + 1) #結果為2print(False + 1) #結果為11234567891011
3.2 數字型1.整數型(int)
即為數學上的整數,例如:1,2,25,30等。
2.浮點型(float)即為數學上的小數,包含.0小數,例如1.5,2.83,17.0等。
3.算術運算子以下假設變數 a=10,b=20:
當整數與浮點數進行運算時,返回的值預設為浮點數。
a , b = 2 , 2.5print(type(a * b)) #結果為<class 'float'>12
4.數字格式化下表展示了 str.format() 格式化數字的多種方法:
a = 3.1415926print("{:.2f}".format(a)) #結果為3.1412
數字格式輸出描述3.1415926{:.2f}3.14保留小數點後兩位3.1415926{:+.2f}+3.14帶符號保留小數點後兩位-1{:+.2f}-1.00帶符號保留小數點後兩位2.71828{:.0f}3不帶小數5{:0>2d}05數字補零 (填充左邊, 寬度為2)5{:x<4d}5xxx數字補x (填充右邊, 寬度為4)10{:x<4d}10xx數字補x (填充右邊, 寬度為4)1000000{:,}1,000,000以逗號分隔的數字格式0.25{:.2%}25.00%百分比格式1000000000{:.2e}1.00e+09指數記法13{:>10d} 13右對齊 (預設, 寬度為10)13{:<10d}13左對齊 (寬度為10)13{:^10d} 13中間對齊 (寬度為10)11
'{:b}'.format(11)'{:d}'.format(11)'{:o}'.format(11)'{:x}'.format(11)'{:#x}'.format(11)'{:#X}'.format(11)
10111113b0xb0XB
進位制
^,<,>分別是居中、左對齊、右對齊,後面頻寬度,: 號後面帶填充的字元,只能是一個字元,不指定則預設是用空格填充。+表示在正數前顯示+,負數前顯示-,(空格)表示在正數前加空格b、d、o、x 分別是二進位制、十進位制、八進位制、十六進位制。
5.其他操作divmod()函式:同時得到商和餘數。
a = 10b = 3print(divmod(a,b)) #結果為元組(3,1)123
round()函式:將浮點數四捨五入。
a = 3.678print(round(a))#結果為412
chr():用一個範圍在 range(256)內的(就是0~255)整數作引數,返回一個對應的字元(引數可以是16進位制或者10進位制)。
a = 66 #十進位制b = 0x68 #十六進位制print(chr(a)) #結果為Bprint(chr(b)) #結果為B1234
3.3 字串型(str)
是一種不可變的字元序列:後續所有拼接/修改操作均為形成新的字串資料(標點符號及空格也是字元)。
1.字串的建立利用單引號(‘xxx’)/雙引號(“xxx”)進行建立。
a = '傑尼龜' ; b = "可達鴨"c = "my name is '傑尼龜'"print(type(a),type(b)) #結果為<class 'str'>123
多行字串(‘’‘xxxxxxx’’’)進行建立。
a = '''傑尼龜'''print(type(a)) #結果為<class 'str'>1234
2.字串的拼接
使用【+】號進行拼接,生成一個新的拼接後的字串物件。
a ,b , c= '傑尼龜' , "可達鴨" ,111print(a + str(c) + b)#結果為傑尼龜111可達鴨12
直接字串相接也可拼接
c= '傑尼龜' '暴打'"可達鴨"print(c)#結果為傑尼龜暴打可達鴨12
“”.join(list):將列表中字串用特定字元拼接起來,不指定字元預設為直接拼接。
a = ['我', '叫', '傑', '尼', '龜']print("".join(a)) #結果為我叫傑尼龜print("*".join(a)) #結果為我*叫*傑*尼*龜123
使用【+】,每【+】一次會形成一個新的物件。使用join在拼接字串之前會計算所有字串的長度,然後逐一複製,僅新建一次物件。大型運算時推薦使用join
3.字串的複製字串可直接使用乘法運算子進行復制
c = '傑尼龜'print(c * 3)#結果為傑尼龜傑尼龜傑尼龜12
4.檢查字串
str.isdigit():檢查字串內部是否全部是數字,返回True或False。
c = '123456'print(c.isdigit())#結果為Truec = '123 456'print(c.isdigit())#結果為False1234
str.isalpha():檢查字串內部是否全是字母,返回True或False。
c = 'asdfgh'print(c.isalpha())#結果為Truec = 'asdfgh123'print(c.isalpha())#結果為False1234
str.isupper():檢查字串內部是否全是大寫字母,返回True或False。
c ='ASDFGH'print(c.isupper())#結果為Truec = 'asdfgh'print(c.isupper())#結果為False1234
str.islower():檢查字串內部是否全是小寫字母,返回True或False。
c ='asdfgh'print(c.islower())#結果為Truec ='ASDFGH'print(c.islower())#結果為False1234
str.endswith():檢查字串內部是否以指定字串結尾,返回True或False。
c ='asdfgh'print(c.endswith("gh"))#結果為True12
str.startswith():檢查字串內部是否以指定字串開頭,返回True或False。
c ='ASDFGH'print(c.startswith("AS"))#結果為True12
str.isspace():檢查字串內部是否全是空格,返回True或False。
c =' 'print(c.isspace())#結果為True12
5.查詢字串
len():查詢字串的長度,返回長度數值。
c ='123456789'print(len(c))#結果為912
str.find():查詢指定字元在字串中從左往右第一次出現的位置,有則返回字元下標(編號),沒有返回-1。
c ='123456789'print(c.find("3"))#結果為2print(c.find("10"))#結果為-1123
str.rfind():查詢指定字元在字串中從右往左第一次出現的位置,有則返回字元下標(編號),沒有返回-1。
c ='1234567289'print(c.rfind("2"))#結果為7print(c.rfind("10"))#結果為-1123
str.index():查詢指定字元在字串中第一次出現的位置,有則返回字元下標(編號),沒有丟擲異常。
c ='123456789'print(c.index("9"))#結果為8print(c.index("10"))#結果為ValueError: substring not found123
str.count():查詢指定字元在字串中總共出現次數,返回數量。
c ='123456789123465184'print(c.count("1"))#結果為3print(c.count("10"))#結果為0123
6.“修改”字串
python中字串本身為不可修改型別,所有修改操作均為建立新的物件,原字串不做改變。
str.replace(“old”,“new”):使用指定字元替換字串中對應字元。
a = "hello world"print(a.replace("o","0"))#結果為hell0 w0rld12
str.upper():將字串內部字母轉換為大寫字母。
a = "12345asdf"print(a.upper())#結果為12345ASDF12
str.lower() :將字串內部字母轉換為小寫字母。
a = "12345ASDF"print(a.lower())#結果為12345asdf12
str.capitalize():將一個字串的第一個字元改為大寫字母,其餘字母變小寫。如果第一個字元不是字母,則僅將後續字母改為小寫。
a = "12345ASDF"print(a.capitalize())#結果為12345asdfa = "a2345ASDF"print(a.capitalize())#結果為A2345asdf1234
str.split():將字串按照指定字元進行分割為多個字串並存儲在列表中,如不指定字元,預設為空格、換行符、製表符。
a = "我 叫 傑 尼 龜"b = "我*叫*傑*尼*龜"print(a.split())#結果為['我', '叫', '傑', '尼', '龜']print(b.split("*"))#結果為['我', '叫', '傑', '尼', '龜']1234
str.title():將字串中每個單詞的首字母大寫,其餘改為小寫
a = "my name"b = "MY NAME"print(a.title())#結果為My Nameprint(b.title())#結果為My Name1234
str.swpacase():將字串中所有字母大小寫互換
a = "My Name"print(a.swapcase())#結果為mY nAME12
str.strip():將字串中首尾的指定字元去除
a = '**傑尼*龜*'print(a.strip("*")) #結果為傑尼*龜12
str.lstrip():將字串中左側的指定字元去除
a = '**傑尼*龜*'print(a.lstrip("*")) #結果為傑尼*龜*12
str.rstrip():將字串中左側的指定字元去除
a = '**傑尼*龜*'print(a.rstrip("*")) #結果為**傑尼*龜12
eval():去除首尾引號,並執行餘下語句
a = '123'print(eval(a)+2) #結果為12512
ord():將單字串轉換為對應的Unicode編碼
a = "傑"print(ord(a)) #結果為2648012
7.字串排版
str.center(num,“x”):填充x字元使字串達到num長度,並將其居中
a = "傑"print(a.center(5,"*")) #結果為**傑**12
str.ljust(num,“x”):填充x字元使字串達到num長度,並將原字串居左
a = "傑"print(a.ljust(5,"*")) #結果為傑****12
str.rjust(num,“x”):填充x字元使字串達到num長度,並將原字串居右
a = "傑"print(a.rjust(5,"*")) #結果為****傑12
8.format()函式的應用
使用示例
a = "傑尼龜"b = "可達鴨"print("{}暴打{}".format(a,b)) #結果為傑尼龜暴打可達鴨print("{0}暴打{0}".format(a,b)) #結果為傑尼龜暴打傑尼龜print("{0}暴打{1}".format(a,b)) #結果為傑尼龜暴打可達鴨print(f"{a}暴打{b}") #結果為傑尼龜暴打可達鴨123456
format()函式
print("{0}*{1}={2:*<7}".format(3,2,2*3))1
位置索引
關鍵字對映
元素訪問
填充對齊
a , b , c = "傑尼龜" , "可達鴨" , "傑尼龜"print("{0:*^7}使用火箭頭槌暴打{1:*>7}和{2:*<7}".format(a,b,c)) #結果為**傑尼龜**使用火箭頭槌暴打****可達鴨和傑尼龜****123
【^,<,>】分別是居中、左對齊、右對齊,後面頻寬度,: 號後面帶填充的字元,只能是一個字元,不指定則預設是用空格填充。
9.字串索引操作str[num]:找到字串指定位置的字元。
標點符號及空格也是字元
a= "my name is '傑尼龜'"print(a[3]) #結果為n12
10.字串切片操作
str[x:y:±step]:從編號x到編號y之前,從左到右或從右到左以step間隔取值
在切片操作中,起始終止編號不在[0:字串長度-1]這個範圍內也不會報錯,超過0或末端按0和末端擷取
3.4型別轉換在python中可使用內建函式對資料型別進行型別轉換:
① str():將資料轉換為字串型別;
a , b , c ='123',456,789.5print(str(b)) ; print(str(c)) #結果為'456' 、 '789.5'12
② float():將純數字字串或整數轉換為浮點數;
a , b , c ='123',456,789.5print(int(a)) ; print(int(c)) #結果為123 、 78912
int()函式轉換是直接去掉小數點,而不是四捨五入
四、運算子1.比較運算子比較運算子運算結果返回True和False。
假設:a = 15 ; b = 20
運算子描述例項==等於:比較兩個物件值是否相等a == b;返回False!=不等於:比較兩個物件值是否不相等a != b;返回True>大於:比較兩個物件值的大小關係a > b;返回False<小於:比較兩個物件值的大小關係a < b;返回True>=大於等於:比較兩個物件值的大小關係a >= b;返回False<=小於等於:比較兩個物件值的大小關係a <= b;返回True
2.邏輯運算子與(and)、或(or)、非(not)
運算子例項說明andx and yx為True,計算並返回y的值。x為False,不計算y,返回Falseorx or yx為True,不計算y,返回True。x為False,計算並返回y的值notnot xx為True,返回False。x為False,返回True
3.身份運算子is、not is比較兩個物件的id是否一致
運算子例項說明is比較兩個物件地址是否一致x is y :‘類似於id(x) == id(y) , 如果引用的是同一個物件則返回 True,否則返回 Falsenot is比較兩個物件地址是否一致x not is y :‘類似於id(x) != id(y) , 如果引用的不是同一個物件則返回 True,否則返回 False
4.成員運算子in、not in判斷物件是否在物件內部
運算子例項說明in如果在指定的序列中找到值返回 True,否則返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。not in如果在指定的序列中未找到值返回 True,否則返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
5.算術運算子運算子描述例項+加 - 兩個物件相加a + b 輸出結果 30-減 - 得到負數或是一個數減去另一個數a - b 輸出結果 -10*乘 - 兩個數相乘或是返回一個被重複若干次的字串a * b 輸出結果 200/除 - x除以yb / a 輸出結果 2%取模 - 返回除法的餘數b % a 輸出結果 0**冪 - 返回x的y次冪a**b 為10的20次方, 輸出結果 100000000000000000000//取整除 - 返回商的整數部分(向下取整)
>>> 9//24>>> -9//2-5
6.賦值運算子
運算子描述例項=簡單的賦值運算子c = a + b 將 a + b 的運算結果賦值為 c+=加法賦值運算子c += a 等效於 c = c + a-=減法賦值運算子c -= a 等效於 c = c - a*=乘法賦值運算子c *= a 等效於 c = c * a/=除法賦值運算子c /= a 等效於 c = c / a%=取模賦值運算子c %= a 等效於 c = c % a**=冪賦值運算子c **= a 等效於 c = c ** a//=取整除賦值運算子c //= a 等效於 c = c // a
7.位運算子(我也不知道這咋用)按位運算子是把數字看作二進位制來進行計算的。Python中的按位運演算法則如下:下表中變數 a 為 60,b 為 13,二進位制格式如下:
a = 0011 1100b = 0000 1101
a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011
運算子描述例項&按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0(a & b) 輸出結果 12 ,二進位制解釋: 0000 1100|按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1。(a | b) 輸出結果 61 ,二進位制解釋: 0011 1101^按位異或運算子:當兩對應的二進位相異時,結果為1(a ^ b) 輸出結果 49 ,二進位制解釋: 0011 0001~按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1 。~x 類似於 -x-1(~a ) 輸出結果 -61 ,二進位制解釋: 1100 0011,在一個有符號二進位制數的補碼形式。<<左移動運算子:運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0。a << 2 輸出結果 240 ,二進位制解釋: 1111 0000>>右移動運算子:把">>"左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數a >> 2 輸出結果 15 ,二進位制解釋: 0000 1111
8.Python運算子優先順序以下表格列出了從最高到最低優先順序的所有運算子:
運算子描述**指數 (最高優先順序)~ + -按位翻轉, 一元加號和減號 (最後兩個的方法名為 +@ 和 -@)* / % //乘,除,取模和取整除+ -加法減法>> <<右移,左移運算子&位 'AND'^ |位運算子<= < > >=比較運算子<> == !=等於運算子= %= /= //= -= += *= **=賦值運算子is not is身份運算子in not in成員運算子not and or邏輯運算子
五、列表(list)列表是一種python內建可變序列,用來儲存不限數量、不限型別的資料集合。
1.列表的建立方括號建立
方括號內新增資料,使用【,】逗號隔開
l = [1,2,3,"傑尼龜","可達鴨",True,False]print(type(l)) #結果為<class 'list'>12
生成器推導式建立:利用for迴圈加條件判斷建立想要的列表
l = [i for i in range(5)]print(l) #結果為[0, 1, 2, 3, 4]l = [i+5 for i in range(5) if i <=3]print(l) #結果為[5, 6, 7, 8]1234
list()函式建立
使用list函式將可迭代資料轉換為列表
l = list("傑尼龜暴打可達鴨")print(l) #結果為['傑', '尼', '龜', '暴', '打', '可', '達', '鴨']12
使用list函式將range函式轉換為列表:建立整數序列(開始預設為0,步長預設為1),步長正數從小往大數,步長負數從大往小數。開始結束數值應滿足大小關係,否則返回空列表
l = list(range(5))print(l) #結果為[0, 1, 2, 3, 4]l = list(range(3,10,2))print(l) #結果為[3, 5, 7, 9]l = list(range(10,3,-2))print(l) #結果為[10, 8, 6, 4]l = list(range(3,10,-2))print(l) #結果為[]12345678
2.增加元素
list.append():在列表末尾新增單個元素(速度最快,推薦使用)。
l = [1]l.append("10")print(l) #結果為[1, '10']123
list.extend(list1):將list1新增到list尾部。
l = [1]l1 = ["10"]l.extend(l1)print(l) #結果為[1, '10']1234
list.extend(list1):將list1新增到list尾部。
l = [1]l1 = ["10"]l.extend(l1)print(l) #結果為[1, '10']1234
list.insert():在列表指定位置新增單個元素。
l = [1,2,3,4,5]l.insert(3,5)print(l) #結果為[1, 2, 3, 5, 4, 5]123
以上操作均為原地修改,不產生新物件
list1 + list2 :將列表2新增到列表1尾部(會產生一個新的列表物件,原列表不會改變)。
l = [1,2,3,4,5]l1 = [6,7,8,9,10]l2 = l + l1print(l) #結果為[1, 2, 3, 4, 5]print(l2) #結果為[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]12345
list * num :將原列表複製num份併合併成一個新列表(會產生多個新的列表物件,原列表不會改變)。
l = [1,2,3]l1 = l * 3print(l) #結果為[1, 2, 3]print(l1) #結果為[1, 2, 3, 1, 2, 3, 1, 2, 3]1234
利用切片新增新增成段元素
a = [1,2,3,6]b = [4,5]a[2:2] = bprint(a) #結果為[1, 2, 4, 5, 3, 6]1234
3.刪除元素
del list[num] :刪除列表指定位置的元素。如不指定位置則為刪除列表本身。
l = [1,2,3]del l[2]print(l) #結果為[1, 2]del lprint(l) #結果為name 'l' is not defined12345
list.clear() :清除列表中所有元素,不是刪除列表本身。
l = [1,2,3]l.clear()print(l) #結果為[]123
list.pop():提取出列表指定位置的元素,留作他用。
l = [1,2,3,4,3,5]l.remove(3)print(l) #結果為[1, 2, 4, 3, 5]123
最後多說一句,小編是一名python開發工程師,這裡有我自己整理的整套python學習資料和路線,想要這些資料的都可以關注小編,並私信“01”領取。