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

3.2 數字類型的操作

在3.1節中了解了數字類型包括整數類型、整數的按位運算、浮點數、復數類型和布爾類型。那么在這一節中將學習數字類型的基本操作方法。

3.2.1 內置的數值操作符

在Python中,內置的操作運算符主要分為四種,分別是算術運算符、賦值運算符、邏輯運算符和關系運算符。其實例分別如下。

1. 算術運算符

算術運算符如表3-3所示。

表3-3 算術運算符

具體使用及輸出如下。

【例3-8】算術運算。

2. 賦值運算符

賦值運算符如表3-4所示。

表3-4 賦值運算符

具體使用及輸出如下。

【例3-9】賦值運算。

注意:除法運算結果為浮點數,和被除數與除數的類型無關。

3. 邏輯運算符

邏輯運算符如表3-5所示。

表3-5 邏輯運算符

邏輯運算主要與布爾值的判斷和0、1操作有關。

【例3-10】邏輯運算。

4. 比較運算符

比較運算符如表3-6所示。

表3-6 比較運算符

【例3-11】比較運算。

3.2.2 內置的數值運算函數

內置的數值運算函數如表3-7所示。

表3-7 內置的數值運算函數

部分函數操作及其具體用法示例如下。

【例3-12】函數運算。

常見的函數操作中,部分函數的用法需要特殊記憶。下面列舉的函數其用法雖然不廣泛,但是對于理解Python的數據類型和存儲有著較為直觀的意義。

(1)函數round()與精度誤差。

函數round()的作用為將浮點數A進行四舍五入,并指定小數的位數。關于舍入需要知道Python中浮點數的特征。

浮點數本身就是非精確數據。大多數十進制小數并不能完全用二進制小數來表示。因此,輸入的十進制浮點數一般只能用二進制浮點數來進行近似。

例如在十進制中,對于分數1/3,將其寫成小數時只能無限近似寫成1.333…,同理,在面對十進制浮點小數例如0.1時,無法將其完美地換算為二進制數據,只能無限近似。Python中存在一個近似策略,用戶面對的屏幕輸出的十進制數值僅是被輸出的一個近似值,其真實的值以二進制數值存儲在機器上。上述情況告訴我們,Python以舍入形式進行數據的近似管理。

round()函數在使用上實際上也很簡單。

【例3-13】round()函數。

這和人們認知中的小數近似結果一致,即四舍五入,但是有時候考慮到前面提到的存儲情況時就會出現另一種狀況。

【例3-14】round()函數精度。

可以清楚地看到,這似乎違背了四舍五入的基本法則,實際上這是由于計算機只能采用近似儲存浮點數,導致精度誤差所致。官方文檔存在下列說明:

可以得知數據在近似轉換為0、1儲存時被進行了截斷處理,因此導致了精度誤差,為此round()近似函數實際上只能進行對精度要求不大的近似求值。關于精確計算,Python提供了其他選擇,例如后續將要學到的math模塊中的ceiling方法和將要介紹的decimal模塊。

(2)pow()函數的使用。

pow(x,y[,z])函數看似等價于(x**y)%z。

【例3-15】pow()函數。

但是實際上,它們并不完全等價。

【例3-16】特殊pow()函數。

可知,Python不允許第三個操作數為浮點數,這與x**y%z存在差異,可知在使用上并不完全等價。

3.2.3 內置的數字類型轉換函數

內置的數字類型轉換函數如表3-8所示。

表3-8 內置的數字類型轉換函數

函數使用舉例如下。

【例3-17】ascii()函數。

ascii()函數類似Python 2.X中的repr()函數,結果為返回這個指定可打印對象的字符串表示,如果此對象為非ascii字符就以轉義字符型輸出(\x,\u等),例如中文字符串,具體實例如下。

其中,函數int(x[,base])和函數float(x[,base])內的第二個參數的含義通過以下實例來解釋。

【例3-18】int()函數。

通過實例可以知道,參數base的作用是指定第一個參數的進制類型。此時的x參數不可為數字,只能為字符串、數組或者將要學到的數組列表類型。

base默認為十進制,當指定為8時是八進制,為16時是十六進制等,但注意當其為0的時候,依舊表示十進制。

對于函數complex(real,[imag]),其實例如下。

【例3-19】complex()函數。

可知參數real和imag也可以為計算式,如果第一個參數是一個字符串,它將被解釋為一個復數,并且必須在沒有第二個參數的情況下調用該函數。第二個參數不可以為字符串。每個參數可以是任何數字類型(包括復數)。如果省略imag,則默認為零,構造函數用作int和float之類的數字轉換。如果省略兩個參數,則返回0j。

主站蜘蛛池模板: 襄汾县| 吴江市| 濮阳县| 晋中市| 遵义市| 丰顺县| 合川市| 布拖县| 小金县| 湖南省| 临沂市| 凤台县| 巨鹿县| 浠水县| 南漳县| 东乌珠穆沁旗| 克山县| 南岸区| 定远县| 延安市| 龙口市| 托克逊县| 水富县| 宁乡县| 乌恰县| 凌源市| 韩城市| 介休市| 安平县| 烟台市| 西林县| 斗六市| 东阿县| 斗六市| 义乌市| 神农架林区| 塘沽区| 长丰县| 武城县| 封丘县| 耒阳市|