農林漁牧網

您現在的位置是:首頁 > 林業

Python3萌新入門筆記(24)

2023-01-13由 opython 發表于 林業

橫向製表符是什麼

Python3萌新入門筆記(24)

在學習新的內容之前,我們對前面所學內容做一些補充。

第一部分,變數的賦值與交換。

一、鏈式賦值(Chained Assignment)

開啟Python控制檯,在提示符後方我們進行下面的操作。

>>> a = b = c = 0>>> a # 檢視變數a的值0>>> b # 檢視變數b的值0>>> c # 檢視變數c的值0

透過上方的示例大家能夠看出,當多個變數具有相同的值,我們可以透過這種多個變數之間寫等號的方式進行賦值。

二、序列解包(Sequence Unpacking)

如果我們給多個變數寫入不同的值呢?

我們可以採用下面這種方式。

>>> a,b,c = 1,2,3 # 多變數賦值>>> a # 檢視變數a的值1>>> b # 檢視變數b的值2>>> c # 檢視變數c的值3

大家能夠看到,我們可以同時對多個變數進行賦值操作,只需要用逗號把它們隔開,並且等號右側值的數量和變數數量相同即可。

這是什麼原理呢?

大家再來繼續嘗試。

>>> 1,2,3(1, 2, 3)

大家能夠看到,當我們輸入多個值並用逗號分隔,實際上是把這些值變成了一個序列(元組)。

Python會自動把這個序列分解,給到對應的每一個變數。

既然能夠對序列進行解包,那麼列表也一樣。

我們再來做嘗試。

>>> a,b,c = [1,2,3]>>> a1>>> b2>>> c3

實際上,字串、列表、元組、集合、字典等都可以進行類似的操作。

那麼,如果右側值的數量與左側不相等呢?

我們可以變數名稱前面寫入“*”,這樣該變數的值會變成一個列表。

我們來做兩個嘗試。

>>> *a,b,c = 1,2>>> a[]>>> b1>>> c2

>>> *a,b,c = 1,2,3,4>>> a[1,2]>>> b1>>> c2

當最左側變數帶有“*”,程式會先對右側變數賦值,然後將剩餘的值(或空值)寫入帶有“*”的變數。

“*”可以寫在任意一個變數的前方,但是隻能有一個。

由此還能夠看出,“*”寫在最右側變數前方時,與寫在最左側變數前方時正好相反。

而“*”寫在中間某個變數前方時,會先對應著為兩側變數賦值,然後將剩餘的值(或空值)寫入帶有“*”的變數。

三、變數交換

我們先來做個嘗試。

>>> a,b = 1,2>>> a,b = b,a>>> a2>>> b1

大家能夠看到,我們可以透過上面這種方式對變數的值進行互換。

這裡只是透過2個變數互換舉例,實際上可以支援多個變數的互換。

四、增量賦值

增量賦值我們在之前的關於運算子教程中已經接觸過。

>>> a = 1>>> a += 1>>> a2

具體內容參考Python3萌新入門筆記(13)的賦值運算子部分。

第二部分,進位制與資料型別

一、進位制

所謂進位制就是人們規定的一種進位方法。

2進位制就是滿2進1位;

8進位制就是滿8進1位;

10進位制就是滿10進1位;

16進位制就是滿16進1位。

不過,在Python中這些進位制有不同的表達方式。

>>> 0x11 # 非10進位制以0開頭,字母x代表16進位制17>>> 0o11 # 非10進位制以0開頭,字母o代表8進位制9>>> 0b11 # 非10進位制以0開頭,字母b代表2進位制3

關於進位制的內容,先了解這些就可以了。

二、資料型別

Python中有六種標準資料型別,分別為Number(數字)、String(字串)、List(列表)、Tuple(元組)、Set(集合)和Dict(字典)。

這裡我們主要補充一下Number(數字)和String(字串)兩種型別。

首先,數字型別包含:Int(整數)、Float(浮點數)、Bool(布林)和Complex(複數)。

整型(Int):即整數,可以透過int(x[,base=10])函式將非整數或整陣列成的字串以及位元組轉換成整數。

print(int()) # 顯示輸出結果為0print(int(1。23)) # 顯示輸出結果為1print(int(‘5’)) # 顯示輸出結果為5print(int(‘0xF’,16)) # 顯示輸出結果為15

浮點型(Float):即小數,float([x])函式將非整數或整陣列成的字串以及位元組轉換成整數。

print(float()) # 顯示輸出結果為0。0print(float(1)) # 顯示輸出結果為1。0print(float(‘5’)) # 顯示輸出結果為5。0print(float(0xf)) # 顯示輸出結果為15。0

布林型別(Bool):透過bool(x)函式,能夠得到引數x的布林值。

print(bool()) # 顯示輸出結果為Falseprint(bool(False)) # 顯示輸出結果為Falseprint(bool(‘’)) # 顯示輸出結果為Falseprint(bool(0)) # 顯示輸出結果為Falseprint(bool(None)) # 顯示輸出結果為Falseprint(bool([])) # 顯示輸出結果為Falseprint(bool(())) # 顯示輸出結果為Falseprint(bool({})) # 顯示輸出結果為False

在Python中除了空值、”、False、0、()、[]、{}、None為False,其它均為True。

複數(Complex):能夠透過complex(x)函式建立一個複數。

print(complex(1)) # 顯示輸出結果為:(1+0j)print(complex(‘2+1j’)) # 顯示輸出結果為:(2+1j)print(complex(2, 5)) # 顯示輸出結果為:(2+5j)

接下來,是字串(String)型別。

字串(String):透過str(object=”)函式能夠將物件轉換為字串。

錯誤示例:

a = str(1)b = a + 1

當我們把數字轉換為字串,進行加法運算時,會丟擲異常。

TypeError: unsupported operand type(s) for -: ‘str’ and ‘int’

型別錯誤:不被支援的運算元型別:字串和整型

第三部分、字串相關函式

一、迭代物件合併為字串

join(iterable)函式能夠將可迭代物件的元素或多個字串合併為一個字串,引數iterable為可迭代物件。如果引數不是字串會丟擲型別錯誤的異常,包括位元組物件。此函式透過元素間的分隔符呼叫。

lst1 = ‘1’, ‘2’, ‘3’print(‘+’。join(lst1)) # 顯示輸出結果為:1+2+3lst2 = [‘1’, ‘2’, ‘3’]print(‘’。join(lst2)) # 顯示輸出結果為:123

二、字串內單詞首字母大寫

這裡需要使用string模組中的capwords(s[,sep])函式,引數s為需要轉換的字串,引數sep為分隔符,省略引數sep時,每個單詞均轉換為首字母大寫單詞;未省略引數sep時,除了第一個單詞首字母轉換為大寫,分隔符後方的第一個字母均轉換為大寫。

示例程式碼:

import stringold_str = ‘my name is xiaolou。’new_str1 = string。capwords(old_str)new_str2 = string。capwords(old_str,‘s ’)print(new_str1) # 顯示輸出結果為:My Name Is Xiaolou。print(new_str2) # 顯示輸出結果為:My name is Xiaolou。

三、多字元轉換

這裡需要使用字串物件呼叫translate(table)函式,引數table為轉換表;

很顯然使用這個函式我們需要先建立轉換表,轉換表包含256個 ASCII字元。

我們並不需要手工去建立轉換表,而是可以使用關鍵字str呼叫maketrans(x[,y[,z]])函式建立轉換表。

只有1個引數時,必須輸入一個字典,字典的鍵值可以是ASCII字元或對應的數字序號,轉換時會用值對應的字元替換鍵對應的字元。

table=str。maketrans({111:‘*’})print(‘photo’。translate(table)) # 顯示輸出結果為:ph*t*

輸入2個引數時,前面的引數是被替換的字元,後面的引數是替換後的字元。

table=str。maketrans(‘o’,‘*’)print(‘photo’。translate(table)) # 顯示輸出結果為:ph*t*

輸入3個引數時,最後一個引數必須是字串,包含在這個字串中的每一個字元都被替換為None(空值)。

注意:函式會先完成第3個引數的替換,再進行前兩個引數的替換。

table=str。maketrans(‘o’,‘*’,‘po’)print(‘photo’。translate(table)) # 顯示輸出結果為:ht

第四部分、字串跳脫字元

\:在字串結尾時為續行符

\\:斜槓

\’:單引號

\”:雙引號

\a:響鈴

\b:退格符

\n:換行符

\t:橫向製表符

\v:縱向製表符

\r:回車符

\f:換頁符

\ooo:八進位制字元

\xhh:十六進位制字元

\000:終止符

\other:其它的字元以普通格式輸出

\N{name}:Unicode資料庫中的字元名

\uhhhh:值為16位的十六進位制字元

\Uhhhhhhhh:值為32位的十六進位制字元

本節知識點:

1、變數賦值與互動

2、進位制與資料型別

3、字串轉換函式

4、字串跳脫字元

本節英文單詞與中文釋義:

1、unpacking(unpack):拆包

2、chained(chain):鏈條式

3、assignment:分配

4、unsupported(unsupport):不支援

5、operand:運算元

6、join:連線

7、make trans:使…轉移

8、trans late:轉移原來的

9、table:表

10、photo:照片

Python3萌新入門筆記(24)