官术网_书友最值得收藏!

2.3 基本數據類型

在內存中可以使用多種類型存儲數據。例如,一個人的姓名可以用字符型存儲,年齡可以使用數值型存儲,而婚否可以使用布爾類型存儲。這些都是Python中提供的基本數據類型。下面將對這些基本數據類型進行詳細介紹。

2.3.1 數字

在程序開發時,經常使用數字記錄游戲的得分、網站的銷售數據和網站的訪問量等信息。在Python中,提供了數字類型用于保存這些數值,并且它們是不可改變的數據類型。如果修改數字類型變量的值,那么會先把該值存儲到內容中,然后修改變量讓其指向新的內存地址。

在Python中,數字類型主要包括整數、浮點數和復數。下面分別介紹。

1.整數

整數用來表示整數數值,即沒有小數部分的數值。在Python中,整數包括正整數、負整數和0,并且它的位數是任意的(當超過計算機自身的計算功能時,會自動轉用高精度計算),如果要指定一個非常大的整數,只需要寫出其所有位數即可。

整數類型包括十進制整數、八進制整數、十六進制整數和二進制整數。下面分別進行介紹。

(1)十進制整數。十進制整數的表現形式大家都很熟悉。例如,以下數值都是有效的十進制整數:

    31415926535897932384626
    66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    666666666666666666666666666666666666666
    -2017
    0

在IDLE中,執行的結果如圖2.19所示。

圖2.19 有效的整數

注意

不能以0作為十進制數的開頭(0除外)。

(2)八進制整數。由0~7組成,進位規則是“逢八進一”,并且以0o/0O開頭的數,如0o123(轉換成十進制數為83)、?0o123(轉換成十進制數為?83)。

(3)十六進制整數。由0~9、A~F組成,進位規則是“逢十六進一”,并且以0x/0X開頭的數,如0x25(轉換成十進制數為37)、0Xb01e(轉換成十進制數為45086)。

(4)二進制整數。只有0和1兩個基數,進位規則是“逢二進一”,如101(轉換為十制數為5)、1010(轉換為十進制為10)。

2.浮點數

浮點數由整數部分和小數部分組成,主要用于處理包括小數的數,如1.414、0.5、?1.732、3.1415926535897932384626等。浮點數也可以使用科學記數法表示,如2.7e2、?3.14e5和6.16e?2等。

注意

在使用浮點數進行計算時,可能會出現小數位數不確定的情況。例如,計算0.1+0.1時,將得到想要的0.2,而計算0.1+0.2時,將得到0.30000000000000004(想要的結果為0.3),執行過程如下:

    01  >>> 0.1+0.1
    02  0.2
    03  >>> 0.1+0.2
    04  0.30000000000000004

對于這種情況,所有語言都存在這個問題,暫時忽略多余的小數位數即可。

【例2.1】根據身高、體重計算BMI指數。(實例位置:資源包\TM\sl\02\01)

在IDLE中創建一個名稱為bmiexponent.py的文件,然后在該文件中定義兩個變量:一個用于記錄身高,單位為m;另一個用于記錄體重,單位為kg。根據公式“BMI=體重/(身高×身高)”計算BMI指數,代碼如下:

說明

在上述代碼中,str()函數用于將數值轉換為字符串;if語句用于進行條件判斷,將在4.2節中進行詳細介紹。

運行結果如圖2.20所示。

圖2.20 根據身高、體重計算BMI指數

3.復數

Python中的復數與數學中的復數的形式完全一致,都是由實部和虛部組成,并且使用j或J表示虛部。當表示一個復數時,可以將其實部和虛部相加。例如,一個復數實部為3.14,虛部為12.5j,那么這個復數為3.14+12.5j。

2.3.2 字符串

字符串就是連續的字符序列,可以是計算機所能表示的一切字符的集合。在Python中,字符串屬于不可變序列,通常使用單引號(' ')、雙引號(" ")或者三引號(''' '''或""" """)括起來。這3種引號形式在語義上沒有差別,只是在形式上有些差別。其中,單引號和雙引號中的字符序列必須在一行上;而三引號中的字符序列可以分布在連續的多行上。例如,定義3個字符串類型變量,并且應用print()函數輸出,代碼如下:

執行結果如圖2.21所示。

誤區警示

字符串開始和結尾使用的引號形式必須一致。另外,當需要表示復雜的字符串時,還可以進行引號的嵌套。例如,下面的字符串也都是合法的。

    '在Python中也可以使用雙引號(" ")定義字符串'
    "'(··)nnn'也是字符串"
    """'---' "_"***"""

【例2.2】輸出字符畫——坦克。(實例位置:資源包\TM\sl\02\02)

在IDLE中創建一個名稱為ascii_art.py的文件,然后在該文件中輸出一個表示字符畫的字符串,由于該字符畫有多行,所以需要使用三引號作為字符串的定界符。關鍵代碼如下:

運行結果如圖2.22所示。

圖2.21 使用3種形式定義字符串

圖2.22 輸出字符畫

Python中的字符串還支持轉義字符。所謂轉義字符,是指使用反斜杠“\”對一些特殊字符進行轉義。常用的轉義字符及其說明如表2.2所示。

表2.2 常用的轉義字符及其說明

注意

在字符串定界符引號的前面加上字母r(或R),那么該字符串將原樣輸出,其中的轉義字符將不進行轉義輸出。例如,輸出字符串“"失望之酒\x0a機會之杯"”將轉義字符換行輸出;而輸出字符串“r"失望之酒\x0a機會之杯"”,則原樣輸出,執行結果如圖2.23所示。

圖2.23 轉義輸出和原樣輸出的對比

2.3.3 布爾類型

布爾類型主要用來表示真或假的值。在Python中,標識符True和False被解釋為布爾值。另外,Python中的布爾值可以轉換為數值,其中True表示1,而False則表示0。

說明

在Python中,可以對布爾類型的值進行數值運算,例如,“False+1”的結果為1。但是不建議對布爾類型的值進行數值運算。

在Python中,對所有的對象都可以進行真值測試。其中,只有下面列出的4種情況得到的值為假,其他對象在if或者while語句中都表現為真。

 False或None。

 數值中的零,包括0、0.0、虛數0。

 空序列,包括字符串、空元組、空列表、空字典。

 自定義對象的實例,該對象的__bool__方法返回False,或者__len__方法返回0。

2.3.4 數據類型轉換

Python是動態類型的語言(也稱為弱類型語言),不需要像Java或者C語言一樣在使用變量前必須先聲明變量的類型。雖然Python不需要先聲明變量的類型,但有時仍然需要用到類型轉換。例如,在例2.1中,要想通過一個print()函數輸出提示文字“您的身高:”和浮點型變量height的值,就需要將浮點型變量height轉換為字符串;否則將顯示如圖2.24所示的錯誤。

圖2.24 字符串和浮點型變量連接時出錯

在Python中,提供了如表2.3所示的函數進行各數據類型間的轉換。

表2.3 常用的數據類型轉換函數及其作用

【例2.3】模擬超市的抹零結賬。(實例位置:資源包\TM\sl\02\03)

假設某超市因為找零麻煩,特設抹零行為。現編寫一段Python代碼,實現模擬超市的這種帶抹零的結賬行為。

在IDLE中創建一個名稱為erase_zero.py的文件,然后在該文件中,首先將各個商品金額累加,計算出商品總金額,并轉換為字符串輸出;然后再應用int()函數將浮點型的變量轉換為整型,從而實現抹零,并轉換為字符串輸出。關鍵代碼如下:

運行結果如圖2.25所示。

圖2.25 模擬超市抹零結賬行為

誤區警示

在進行數據類型轉換時,如果把一個非數字字符串轉換為整型,將產生如圖2.26所示的錯誤。

圖2.26 將非數字字符串轉換為整型產生的錯誤

主站蜘蛛池模板: 华容县| 旺苍县| 嫩江县| 沂源县| 宜兰市| 桐城市| 望城县| 五华县| 邯郸县| 新昌县| 西乌| 平顺县| 巴彦县| 大新县| 黔西| 许昌市| 拉萨市| 东明县| 龙门县| 沙洋县| 临清市| 定陶县| 扎兰屯市| 河源市| 揭西县| 平原县| 微博| 茂名市| 顺昌县| 乌拉特前旗| 镇沅| 兴义市| 汝阳县| 章丘市| 香河县| 壤塘县| 通化市| 弋阳县| 西充县| 东宁县| 兴文县|