Python基礎 對於Python,一切事物都是對象,對象基於類創建 所以,以下這些值都時對象:"zhurui"、22、['北京','上海','深圳'],並且是根據不同的類生成的對象。 一、基本數據類型 數字(int) 如:21、45、56 每一個整數都具備如下功能: 字元串(str) 1、name ...
Python基礎
對於Python,一切事物都是對象,對象基於類創建
所以,以下這些值都時對象:"zhurui"、22、['北京','上海','深圳'],並且是根據不同的類生成的對象。
一、基本數據類型
數字(int)
如:21、45、56
每一個整數都具備如下功能:
1 - int 2 將字元串轉換為數字 3 例子: 4 a = "123" 5 print(type(a),a) 6 輸出結果: 7 >>> a = "123" 8 >>> print(type(a),a) 9 <class 'str'> 123 10 11 b = int(a) 12 print(type(b),b) 13 14 輸出結果: 15 >>> b = int(a) 16 >>> print(type(b),b) 17 <class 'int'> 123 18 19 num = "0022" 20 v = int(num, base=16) 21 print(v) 22 23 輸出結果: 24 >>> num = "0022" 25 >>> v = int(num, base=16) 26 >>> print(v) 27 34 28 29 - bit_length 30 #當前數字的二進位,至少用n位表示 31 age = 22 32 v = age.bit_length() 33 print(v) 34 35 輸出結果: 36 >>> age = 22 37 >>> v = age.bit_length() 38 >>> print(v) 39 5
字元串(str)
1、name.capitalize() #首字母大寫
例子:
>>> test = "zhUrui" >>> v = test.capitalize() >>> print(v) Zhurui
2、name.casefold() #所有變小寫,casefold更牛逼,很多未知的對相應變小寫
例子:
>>> test = "zhUrui" >>> v1 = test.casefold() >>> print(v1) zhurui >>> v2 = test.lower() >>> print(v2) zhurui
3、name.center() #設置寬度,並將內容居中
name.ljust() #設置寬度,變數向左,其他部分用所定義的填充符 填充
name.rjust() #設置寬度,變數向右,其他部分用所定義的填充符 填充
name.zfill() #設置寬度,預設變數向右,其他部分用zfill方法特定的填充符"000" 填充
>>> test = "zhurui" >>> v = test.center(20,"中") >>> print(v) 中中中中中中中zhurui中中中中中中中 解釋: # 20 代指總長度 # * 空白未知填充,一個字元,可有可無 輸出結果: 中中中中中中中zhurui中中中中中中中 ########################################## >>> test = "zhurui" >>> v = test.ljust(20,"*") #ljust 變數靠左,其他部分用*填充 >>> print(v) zhurui************** ################################## >>> test = "zhurui" >>> v = test.rjust(20,"*") #rjust 變數靠右,其他部分用*填充 >>> print(v) **************zhurui
>>> test = "zhurui" >>> v = test.zfill(20) ##zfill只能用於000填充 >>> print(v) 00000000000000zhurui
4、name.count() #去字元串中尋找,尋找子序列的出現次數
>>> test = "Zhuruizhuruiru" >>> v = test.count('ru') >>> print(v) 3 >>> v = test.count('z') >>> print(v) 1 ######################################### >>> test = "Zhuruizhuruiru" >>> v = test.count('ru', 5, 6) >>> print(v) 0
5、name.encode() #將字元串編碼成bytes格式
6、name.decode()
7、name.endswith("ui") #判斷字元串是否以ui結尾
name.startswith('ui') #判斷字元串是否以ui開始
>>> test = "zhurui" >>> v = test.endswith('ui') >>> print(v) True >>> v = test.startswith('ui') >>> print(v) False
8、"Zhu\tRui".expandtabs(10) #輸出‘Zhu Rui’, 將\t轉換為多長的空格
>>> test = "Zhu\tRui" >>> v = test.expandtabs(10) >>> print(v) Zhu Rui ################################ test = "username\tpassword\temail\nzhurui\t123456\[email protected]\nzhurui\t123456\[email protected]\nzhurui\t123456\[email protected]" v = test.expandtabs(20) print(v) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day1/logging.py username password email zhurui 123456 24731701@qq.com zhurui 123456 24731701@qq.com zhurui 123456 [email protected]
9、name.find(A) #從開始往後找,找到第一個之後,獲取其位置即索引,找不到返回-1
## > 或 >=
# 未找到 -1
>>> test = "williamwilliam" >>> v = test.find('am') >>> print(v) 5 >>> v = test.find('t') #找變數中的"t"字元, >>> print(v) -1 ##沒有找到,返回負一
10、name.index('a') #找不到,報錯
>>> test = "williamwilliam" >>> v = test.index('a') >>> print(v) 5 >>> v = test.index('8') ##找字元串中是否 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
11、name.format() #格式化,將一個字元串中的占位符替換為指定的值
>>> test = 'i am {name}, age {a}' >>> print(test) i am {name}, age {a} >>> v = test.format(name='william',a=22) >>> print(v) i am william, age 22
>>> test = 'i am {0},age {1}' >>> print(test) i am {0},age {1} >>> v = test.format('william', 22) >>> print(v) i am william,age 22
12、name.format_map() #格式化, 傳入的值{"name": 'william', "a": 22}
>>> test = 'i am {name}, age {a}' >>> v1 = test.format(name='zhurui',a=22) >>> v2 = test.format_map({"name":'zhurui', "a": 19}) >>> print(v1) i am zhurui, age 22 >>> print(v2) i am zhurui, age 19
13、name.isalnum() #字元串中是否只包含 字母和數字
>>> test = "234" >>> v = test.isalnum() >>> print(v) True
14、name.isalpha() #是否是字母,漢字
>>> test = "asfdge242" >>> v = test.isalpha() >>> print(v) False >>> test = "威廉" >>> v = test.isalpha() >>> print(v) True
15、判斷輸入的是否是數字
>>> test = "二" # 1 , ② >>> v1 = test.isdecimal ##判斷十進位小數 >>> v2 = test.isdigit() >>> v3 = test.isnumeric() ##判斷漢語的數字,比如 "二" >>> print(v1,v2,v3) <built-in method isdecimal of str object at 0x00000201FE440AB0> False True
16、name.isprintable() #判斷是否存在不可顯示的字元
\t 製表符
\n 換行
>>> test = "qepoetewt\tfdfde" >>> v = test.isprintable() >>> print(v) False >>> test = "qepoetewtfdfde" >>> v = test.isprintable() >>> print(v) True
17、name.isspace() #判斷是否全部是空格
>>> test = "" >>> v = test.isspace() >>> print(v) False >>> test = " " >>> v = test.isspace() >>> print(v) True
18、name.istitle() #判斷是否是標題,其中必須首字母大寫
>>> test = "Return True if all cased characters in S are uppercase" >>> v1 = test.istitle() >>> print(v1) False >>> v2 = test.title() #將字元串首字母大寫 >>> print(v2) Return True If All Cased Characters In S Are Uppercase >>> v3= v2.istitle() >>> print(v3) True
19、***** name.join() #將字元串中的每一個元素按照指定分隔符進行拼接(五星重點參數)
>>> test = "出任CEO迎娶白富美" >>> print(test) 出任CEO迎娶白富美 >>> v = '_'.join(test) >>> print(v) 出_任_C_E_O_迎_娶_白_富_美 >>>
20、name.islower() #判斷是否全部是大小寫 和 轉換為大小寫
>>> test = "William" >>> v1 =test.islower() #判斷是否全都是小寫 >>> v2 = test.lower() #將變數轉換為小寫 >>> print(v1, v2) False william >>> ################################### >>> test = "William" >>> v1 =test.isupper() #判斷是否全都是大寫 >>> v2 = test.upper() #將變數轉換為大寫 >>> print(v1, v2) False WILLIAM
21、移除指定字元串,優先最多匹配
>>> test = 'xa' >>> v1 =test.isupper() >>> v = test.lstrip("xa") >>> print(v) >>> v = test.rstrip("92exxxexxa") >>> print(v) >>> v = test.strip("xa") >>> print(v) ################################### # test.lstrip() # test.rstrip() # test.strip() # 去除左右空白 # v = test.lstrip() # v = test.rstrip() # v = test.strip() # print(v) # print(test) # 去除\t \n # v = test.lstrip() # v = test.rstrip() # v = test.strip() # print(v)
22、對應關係替換
>>> test = "aeiou" >>> test1 = "12345" >>> v = "asidufkasd;fiuadkf;adfkjalsdjf" >>> m = str.maketrans("aeiou", "12345") >>> new_v = v.translate(m) >>> print(new_v) 1s3d5fk1sd;f351dkf;1dfkj1lsdjf
23、name.partition() #分割為三部分
>>> test = "testegerwerwegwewe" >>> v = test.partition('s') >>> print(v) ('te', 's', 'tegerwerwegwewe') >>> v = test.rpartition('s') >>> print(v) ('te', 's', 'tegerwerwegwewe') >>>
24、name.split() #分格為指定個數
>>> test = "sagesgegessress" >>> v = test.split('s',2) >>> print(v) ['', 'age', 'gegessress'] >>>
25、分割, 只能根據,true, false:是否保留換行
>>> test = "fwerwerdf\frweqnndasfq\fnaqewrwe" >>> v = test.splitlines(False) >>> print(v) ['fwerwerdf', 'rweqnndasfq', 'naqewrwe']
26、以xxx開頭,以xx結尾
>>> test = "backend 1.2.3.4" >>> v = test.startswith('a') >>> print(v) False >>> test.endswith('a') False
27、name.swapcase() #大小寫轉換
>>> test = "WiiLiAm" >>> v = test.swapcase() >>> print(v) wIIlIaM
28、name.isidentifier() #字母,數字,下劃線 :標識符 def class
>>> a = "def" >>> v = a.isidentifier() >>> print(v) True
29、name.replace() #將指定字元串替換為指定字元串,替換功能相當於sed
>>> test = "williamwilliamwilliam" >>> v = test.replace("am", "bbb") >>> print(v) willibbbwillibbbwillibbb >>> v = test.replace("am", "bbb",2) >>> print(v) willibbbwillibbbwilliam >>>
字元串總結
################7個基本魔法################# join # '_'.join("asdfdfsdsf") split find strip upper lower replace(相當於sed替換功能) ################4個灰魔法################# 一、for迴圈 格式: for 變數名 in 字元串: 變數名 break continue 例子: test = "好看的妹子有種沖我來" for item in test: print(item) break 輸出結果為: 好 例子2: test = "好看的妹子有種沖我來" index = 0 while index < len(test): v = test[index] print(v) index += 1 print('============') 輸出結果為: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day12/index1.py 好 看 的 妹 子 有 種 沖 我 來 ============ 例子3:(比較break跟continue的區別) test = "好看的妹子有種沖我來" for item in test: print(item) break 輸出結果為: 好 for item in test: print(item) continue 輸出結果為: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day12/index1.py 好 看 的 妹 子 有 種 沖 我 來 二、索引,下標,獲取字元串中的某一個字元 test = "好看的妹子有種沖我來" v = test[3] print(v) 輸出結果為: 妹 三、切片 v = test[0:1] #標識大於等於0,小於1(0<= <1) print(v) 輸出結果為: 好 四、獲取長度 Python3: len獲取當前字元串中由幾個字元組成 v = len(test) print(v) 輸出結果為: 10 註意: len("asdf") for迴圈 索引 切片
五、獲取連續或不連續的數字 Python2中直接創建在內容中 Python3中只有for迴圈時,才一個一個創建 例子: r1 = range(10) print(r1) 輸出結果為: 10 range(0, 10) 執行for迴圈時: 才會一個一個創建列印 r2 = range(1,10) r3 = range(1,10,2) 幫助創建連續的數字,通過設置步長來指定不連續 v = range(0, 100, 5) #括弧中的5代表步長 for item in v: print(item)
練習題:根據用戶輸入的值,輸出每一個字元以及當前字元所在的索引位置
將文字 對應的索引列印出來: 方法1: test = input(">>>") print(test) # test = qwe test[0] test[1] l = len(test) # l = 3 print(l) r = range(0,l) # 0,3 for item in r: print(item, test[item]) # 0 q,1 w,2 e 方法2: test = input('>>>') for item in range(0, len(test)): print(item, test[item])
##################### 1個深灰魔法 ###################### 字元串一旦創建,不可修改 一旦修改或者拼接,都會造成重新生成字元串 name = "william" age = "22" info = name + age print(info)
列表(list)
如:["william",'zhurui']、["ray","william"]
#################深灰魔法#####################
1、列表格式
# 中括弧括起來 # , 逗號分隔每個元素 # 列表中的元素可以是 數字,字元串,列表,布爾值.. 所有的都能放進去 # “集合”, 內部放置任何東西
2、列表中可以嵌套任何類型
# 列表中的元素可以是 數字,字元串,列表,布爾值.. 所有的都能放進去 # “集合”, 內部放置任何東西
3、索引取值
# list # 類,列表 li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] # 通過list類創建的對象,li >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> print(li[2]) 9 >>> print(li[4][0]) 朱銳
4、切片,切片結果也是列表
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> print(li[3:-1]) ['age', ['朱銳', ['19', 10], '朱'], 'william']
5、列表是可迭代的所以for迴圈、while迴圈都通用
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> for item in li: ... print(item) ... 1 12 9 age ['朱銳', ['19', 10], '朱'] william True >>>
####列表元素,可以被修改
6、通過索引的方式修改
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[0] = "zhurui" >>> print(li) ['zhurui', 12, 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>> li[1] = [11,22,44] #將原來索引1所對應記憶體中的12,賦值一個新的列表[11,22,44] >>> print(li) ['zhurui', [11, 22, 44], 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>>
7、通過切片的方式修改列表中的元素
#修改中還有一個特殊的方法del >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> del li[1] >>> print(li) [1, 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>> #通過切片的方式刪除 >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> del li[2:6] #2<= <6 >>> print(li) [1, 12, True] >>> #通過切片的方式修改 >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[1:3] = [120,90] >>> print(li) [1, 120, 90, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>>
8、in 操作
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> v1 = "朱銳" in li >>> print(v1) False >>> v2 = "age" in li >>> print(v2) True >>> v3 = "william" in li >>> print(v3) True
####列表中的元素
9、操作
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[4][1][0] '19'
10、轉換
>>> s = 123 >>> a = "123" >>> int(a) #將字元串轉換為數字 123 >>> a = 123 >>> str(a) #將數字轉換為字元串 '123' ##字元串轉換為列表 >>> li = list("asdfgeqrererdfgaf") #字元串轉換為列表實質是內部使用了for迴圈 >>> print(li) ['a', 's', 'd', 'f', 'g', 'e', 'q', 'r', 'e', 'r', 'e', 'r', 'd', 'f', 'g', 'a', 'f'] >>> >>> s = "erewsfsasdfe" >>> new_li = list(s) >>> print(new_li) ['e', 'r', 'e', 'w', 's', 'f', 's', 'a', 's', 'd', 'f', 'e'] ##列表轉換為字元串,有兩種處理方法: 1、需要自己寫for迴圈一個一個處理: >>> li = [12,14,146,"343","william"] >>> r = str(li) >>> print(r) [12, 14, 146, '343', 'william'] #當直接將列表使用str轉換為字元串時,其他的都無變化,只是雙引號變為單引號 >>> s = "" #定義一個空的字元串 >>> for i in li: #迴圈列表 ... s += str(i) #使用for迴圈將列表中的元素轉換為字元串與空字元串相加,得到新的變數s ... >>> print(s) 1214146343william 2、直接使用字元串join方法:只僅僅適用於列表中的元素只有字元串 >>> li = ["4324","william"] >>> v = "".join(li) >>> print(v) 4324william ##補充:字元串創建後,不可修改 >>> v = "william" >>> v = v.replace('w','am') #使用字元串的方法,將w替換為am >>> print(v) amilliam >>> li = [11,232,434,45