整型常量
>>>2**10 1024 >>>a=input() 0xa >>>a #Python支持類似於matlab一樣的只輸入變量,打印變量的值 '0xa' >>>print(a) 0xa >>>int(0xa) 10 >>>print(int(0xa)) 10 >>>
類似於上面的int函數將一個字符串轉換爲對應的整數,但也可以指定進制,按照指定進制轉換爲10進制
如
int('整數字符串', n) #轉換整型字符串爲n進制數 >>>int('111') 111 >>>int('111',2) 7 >>>int('111',8) 73 >>>int('111',5) 31 >>> int('+12') 12 >>> int('-12') -12 >>> int('-12.0') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '-12.0' >>>
使用bin(x)、oct(x)和hex(x)
>>> bin(50) '0b110010' >>> oct(50) '0o62' >>> hex(50) '0x32' >>>
浮點數常量
12.5、2.、3.0、1.23e+10、1.23E-10都是合法的浮點數常量。可以用type函數查看數據類型
>>> bin(50) '0b110010' >>> oct(50) '0o62' >>> hex(50) '0x32' >>>
複數常量
副數常量爲“實部+虛部”形式,虛部以j或J結尾。如2+3j、3-5J、2j。可用complex函數來創建負數。complex函數格式如下。
complex(實部,虛部) >>>complex(2,3) (2+3j) >>>(1-1j) (1-1j) >>>type(2+3j) <class 'complex'> >>>
布爾(bool)類型常量
bool類型數據有True和False兩種值。True和False是兩個預定義的內部變量。從面向對象的角度看,布爾類型是int類型的子類,True和False是布爾類型的示例。用於計算時,True對應的是整數1,False對應的整數0
>>> type(True) #輸出True的類型 <class 'bool'> >>> True==1 #測試True是否等於整數1 True >>> True+3 #測試True用於加法 4 >>> isinstance(True, int) #測試True是否是int的實例 True >>> True is 1 #測試True和1是否是同一個類型 False >>>
數字常量
列出一些操作符,運算優先級從上往下依次遞減。括號運算符優先級最高。
操作符 | 說明 | 舉例 |
---|---|---|
** | 冪運算 | 2**3 |
~ | 按位取反 | ~5 |
- | 負號 | -5 |
*、%、/、// | 乘法、餘數、除法、floor除法 | 2*3、3%2、5/2、5//2 |
+、- | 加法、減法 | 2+3、2-3 |
<<、>> | 想作爲以、向右移位 | 3<<2、12 |
& | 按位與 | 5&2 |
^ | 按位異或 | 5^2 |
| | 按位或 | 5| |
<、<=、>、>=、==、!= | 比較運算 | ... |
not | 邏輯非 | not True、not 2<3 |
and | 邏輯與 | x>5 and x<100 |
or | 邏輯或 | x<5 or x>100 |
Python遇到不同哦類型的數字參數運算時,總是將簡單的類型轉換爲複雜的類型。
上面/真除法是普通除法。//爲floor除法(截斷除法)。"x//y"計算結果爲不大於"x/y"的最大整數(如果兩個操作數都是整數是,結果爲整數,否則結果爲float)
邏輯計算
以下值均爲假:
None False 各種數字類型的0,如0、0.0、(0+0j)等 空的序列,如''、()、{}等 空的映射,如{} 包含了返回值爲0或False的 bool()或len()方法的用戶自定義類的實例
比較運算
>>>a=1;b=3;c=5 >>>a<b<c #等價於a<b and b<c True >>>a==b<c #等價於a==b and b<c False >>>a<b>c #等價於a<b and b>a False
小數
由於硬件限制,浮點數缺乏精確度,因此
>>> 0.3+0.3+0.3+0.1 0.9999999999999999 >>> 0.3-0.1-0.2 -2.7755575615628914e-17 >>>
創建
創建和使用小數對象
從Python2.4起,引入了一種新的數字類型:小數對象。小數可以看做固定精度的浮點數,他有固定的位數和小數點,可以滿足要求精度的計算。
>>> from decimal import Decimal >>> Decimal('0.3')+Decimal('0.3')+Decimal('0.4') Decimal('1.0') >>> Decimal('0.3')-Decimal('0.2')-Decimal('0.1') Decimal('0.0') >>> type(Decimal('1.0')) <class 'decimal.Decimal'> >>> type(1.0) <class 'float'> >>>
小數的全局精度
可以使用decimal模塊中的上下文對象設置小數的全局精度
>>> import decimal >>> Decimal('1')/Decimal('3') Decimal('0.3333333333333333333333333333') >>> decimal.getcontext().prec=5 >>> Decimal('1')/Decimal('3') Decimal('0.33333') >>> Decimal('10')/Decimal('3') Decimal('3.3333') >>>
小數的臨時精度
可以利用with語句創建臨時的上下文對象,以設置臨時的小數精度。 例如:
>>> from decimal import Decimal >>> import decimal >>> Decimal('1')/Decimal('3') Decimal('0.3333333333333333333333333333') >>> with decimal.localcontext() as local: ... local.prec=3 ... Decimal('1')/Decimal('3') ... Decimal('10')/Decimal('3') ... Decimal('0.333') Decimal('3.33') >>> Decimal('1')/Decimal('3') Decimal('0.3333333333333333333333333333') >>>
分數
分數對象明確的擁有一個分子和分母,分子分母保持最簡。使用分數可以有效避免浮點數的不精確性。
分數使用fractions模塊中的Fraction函數來創建。分數創建後可以用於各種計算。如:
>>> from fractions import Fraction >>> x=Fraction(2,8) #創建分數 >>> x Fraction(1, 4) #分數被保持最簡 >>> x+2 Fraction(9, 4) >>> x-2 Fraction(-7, 4) >>> x*2 Fraction(1, 2) >>> x/2 Fraction(1, 8) >>> print(x) #print形式的打印,結果爲下 1/4 >>> Fraction.from_float(1.25) #使用Fraction.from_float函數將浮點數類型轉換爲分數 Fraction(5, 4) >>>
數學函數
Python提供了用於數字處理的內置函數和內置模塊
內置的常用數學函數
內置數學函數,無需導入模塊
>>> abs(-5) 5 >>> bin(5) '0b101' >>> hex(20) '0x14' >>> oct(20) '0o24' >>> chr(65) #int轉字符 'A' >>> ord('A') #字符轉int 65 >>> divmod(9,4) #返回商和餘數 (2, 1) >>> a=5 >>> eval('a*a+1') #返回字符串中表達式的值 26 >>> max(1,2,3,4) 4 >>> min(1,2,3,4) 1 >>> pow(2,3) #相當於2**3 8 >>> round(1.56) #保持整數四捨五入 2 >>> round(1.576,2) #保持2位小數四捨五入 1.58 >>> round(1.5),round(-1.5),round(2.5) #舍入部分剛好是5時,向偶數舍入 (2, -2, 2) >>> sum({1,2,3,4}) #求和 10 >>>
math模塊函數
Python提供了大量數學函數,導入math模塊後可用
>>>import math >>> math.pi 3.141592653589793 >>> math.e 2.718281828459045 >>> math.inf #浮點數的正無窮大,-math.inf表示負無窮大 inf >>> math.ceil(2.3) #返回不小於x的最小整數 3 >>> math.fabs(-5) #絕對值 5.0 >>> math.factorial(0),math.factorial(5) #返回非負數的階乘 (1, 120) >>> math.floor(2.3) #返回不大於x的最大整數 2 >>> math.fmod(9,4) #math.fmod(x,y)返回x除以y的餘數 1.0 >>> x=[0.1,0.1,0.1,0.7] >>> sum(x) #求和 1.0 >>> x=[0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1] >>> sum(x) #求和,由於浮點數原因存在不精確性 0.9999999999999999 >>> math.fsum(x) #求和,math.fsum比sum更精確 1.0 >>> math.gcd(12,8) #math.gcd(x,y)返回x和y的最大公約數 4 >>> math.trunc(15.67) #math.trunc(x)返回x的整數部分 15 >>> math.exp(2) #math.exp(x)返回e的x次方 7.38905609893065 >>> math.expm1(2) #math.expm1(x)返回e的x次方減1 6.38905609893065 >>>