Python學習筆記 (2.1)標準數據類型之Number(數字)

Python3中,數字分爲四種——int,float,bool,complexhtml

int(整型)

  和數學上的整數表示沒啥區別,沒有大小限制(多棒啊,不用寫整數高精了),可正可負。還可表示16進制,以 0x 開頭,後面接0~9的數字和a~f的小寫字母。python

  網上有博客說常規整型最大值能夠用如下命令打印函數

import sys print(sys.maxsize)

  而後我獲得了9223372036854775807——$2^{63}-1$——即C/C++中long long型的最大值。多是大於這個值就換成高精之類的表示了吧,惟一的限制只有內存容量。學習

float(浮點型)

  就是小數,能夠用通常的表示方法,也能夠用科學計數法,這時浮點的意思才體現得出來——1.23e9==12.3e8。當計算過程當中浮點數太大或是過小時,解釋器會用科學計數法表示,我試了一下個人python3.7.0,最多保留17位有效數字。超出某個範圍(見下)就會拋出錯誤——spa

Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range')

  浮點型的一些限制能夠經過命令查看——3d

import sys print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

  能夠看到,和C/C++的double差很少,依然存在浮點偏差.http://0.30000000000000004.com/。能夠導入decimal模塊(十進制高精度小數)(這下連小數的高精都不用手寫了,開心一下)對抗浮點偏差,不過速度與float相比慢了好多。decimal用法(留坑)。還能夠導入fractions模塊進行分數運算。fractions用法(留坑)。code

bool(布爾型)

  只有兩種值——True(1)、False(0)。有3種運算——and、or、not,就是且、或、非。也能夠和其餘三種一塊兒作運算,和整型作運算就轉換成整型1或0,遇到浮點就轉爲浮點。server

complex(複數)

  數學上的一個虛數$a+bi$(a爲實部,b爲虛部),在python中有三種表示方法 a+bj (大寫J也能夠。搞不懂爲啥要用j不用i)或 complex(a,b) 。這裏的實部和虛部都是浮點型。htm

  這裏咱們定義一個虛數 x=1+2j ,那麼 x.real() 將返回其實部1.0(float型), x.imag()將返回其虛部2.0(float型), x.conjugate()將返回其共軛複數 1-2j (complex型)。abs()函數能夠求一個複數的模。對象

各數據類型可進行的運算——

  int、bool、float的運算

    Python運算符

    大部分運算符和C/C++區別不大,有如下幾點——

      一、多了冪運算符 ** 和整除符號 // (而"/"符號結果均爲浮點數)

      二、不等於號除了 != 還有 <> 

      三、判斷大小是容許出現 a<b<c 的形式

      四、邏輯運算符是 and  or  not ,而不是 &&  ||  ! ,且運算數字爲int型時,規則發生變化,返回的真值不僅會是1(C/C++中,返回一個真值只會是bool型的0或1),而多是參與計算的數。具體以下

         x and y ——若是 x 爲 False,x and y 返回 False,不然它返回 y 的計算值。

         x or y ——若是 x 是非 0,它返回 x 的值,不然它返回 y 的計算值。

         not x ——若是 x 爲 True,返回 False 。若是 x 爲 False,它返回 True。

        能夠用短路判斷輔助理解和記憶。

      五、多了成員運算符 in 和 not in (not在前),用於判斷某個值是否在某個序列(包括字符串、列表、元組)中,返回一個bool值

      六、多了身份運算符 is 和 is not (not在後),用於判斷兩個變量是否引用同一個對象(是否指向同一片內存區域),返回一個bool值(在Python學習筆記(2)這篇博文中變量部分提到過)

    附:Python運算符優先級(來自Python運算符)

    

    進行更多數學函數的計算,能夠導入模塊math import math ,而後能夠大概像下面這樣搞(更詳細的留坑)

>>> print(math.sin(math.pi/2)) 1.0

    當int型整除或取模時,一直知足這個公式a = (a//b)*(b) + (a%b),因而有負數參與的整除和取模就能夠計算了。

  複數的計算

    兩個複數間進行+、-、*、/四種運算的規則和高中數學中的一致,還能夠進行乘方(**)運算。要以複數爲參數進行更復雜的計算(如sin()cos()…)或是但願其餘三種數據類型的計算過程能夠返回複數而不是報錯(如sqrt(-1)),那麼就要導入cmath模塊 import cmath (更詳細的留坑)。

相關文章
相關標籤/搜索