Python的一些進階補充

鋼琴小王子發表於2020-11-30


參考了《Python3從入門到實戰》

一、 可以用isinstance()判斷一個物件是否為某種型別的物件

print(isinstance(2,int)) #判斷2int型別的物件嗎?
執行結果如下:
True

二、Python可通過在數的前面加字首來表示進位制:

1.加0b或0B來表示二進位制數;

2.加字首0o或0O來表示八進位制數;

3.加字首0x或0X來表示十六進位制數.

print(0b0110100101)
print(0o703516)
print(0x7F3BA)
執行結果如下:
421
231246
521146

三:可以用內建函式bin(),oct(),hex()分別得到一個數的二進位制,八進位制,十六進位制對應的字串:

print(bin(412))
print(oct(412))
print(hex(412))
執行結果如下:
0b110011100
0o634
0x19c

四:Python提供了高精度的Decimal類和分數計算的Fraction類:

import Decimal
from fractions import Fraction as F
print(0.1)
print(F(1,3))#表示分數1/3
print(1/F(5,6))#表示分數6/5

#Python用於數值計算的函式
print(abs(-3.4))
print(min(3.4,2.8))
print(max(3.4,2.8))
print(pow(0.3,4))
print(round(2.8))#取最接近的整數
print(round(2.3))
print(round(-2,3))
執行結果如下:
3.4
2.8
3.4
0.0081
3
2
-2

五:匯入數學模組:

	import math
    print("*"*50)
    print(math.pi)
    print(math.e)
    
    #浮點計算可能產生兩個異常值,inf和nan,也可能丟擲一個OverflowError異常。
    #當浮點數超過float型別數值表示範圍時,產生的結果是無窮大(inf)
    #並不是所有溢位的值都用inf表示,結果是inf還是異常是底層C Python決定的
    
    print("*"*50)
    x = 10.0 ** 200
    y = x*x
    print(y)
    print(math.isinf(y)) 
    
    #如果除inf的結果是未定的,則結果是nan(未定的數值).
    #因為nan不能和其他值進行比較,所以只能用函式ianan()檢查nan
    
    print("*"*50)
    x = (10.0) ** 200 * (10.0) ** 200
    y = x/x
    print(y)
    print(math.isnan(y))
    
	執行結果如下:
	**************************************************
	3.141592653589793
	2.718281828459045
	**************************************************
	inf
	True
	**************************************************
	nan
	True

六:也可以使用函式isfinite()來檢查一個數值是常規數值還是特殊值inf 或 nan

import math
for i in [math.pi,math.nan,math.inf]:
	print(math.isfinite(i))
執行結果如下:
True
False
False

七:浮點數的相等比較

1.isclose(a,b,*,rel_tol=le-09,abs_tol=0.0) :預設形參rel_tol和abs_tol分別表示相對誤差和絕對誤差

import math
a = 1.0 - 0.99
b = 100 - 99.99
print(a==b)
print(math.isclose(a, b))
執行結果如下:
False
True

八:浮點數轉化為整數

1.函式trunc()截斷浮點數的小數部分

2.函式floor()能將轉化為比他小的最大整數

3.函式ceil()將浮點數轉換為比他大的最小整數

import math
a = 1.8
print(math.trunc(a))
print(math.floor(a))
print(math.ceil(a))
執行結果如下
1
1
2

4.sqrt(x)用於專門計算一個數x的平方根

5.pow(x,y)用於計算x的y次方,類似於x ** y,但pow(x,y)可以保證按照浮點數運算,而x ** y只可以返回一個int或float

6.exp(x)以自然常數為底的指數函式

7.expml(x)計算e**x - 1

8.對數函式log(x,base) 底為base 還有一些變體log2(x) log10(x) log1p(x):

from math import *
print(sqrt(9))
print(pow(3,3))
print(exp(1))
print(expm1(1))
print(log10(10))
print(log1p(1))
#什麼都不寫就是ln
print(log(e))
執行結果如下:
3.0
27.0
2.718281828459045
1.718281828459045
1.0
0.6931471805599453
1.0

九:角度與弧度

1.函式radians()將角度值轉換成弧度

2.函式degrees()將弧度值轉換成角度值

from math import *
print(radians(45))
print(degrees(pi))
執行結果如下:
0.7853981633974483
180.0

十:math模組中包含了各種三角函式和反三角函式如sin,cos,tan,atan.

from math import *
print(sin(0))
print(cos(0))
print(tan(0))
print(degrees(atan(1)))#轉化成角度了

執行結果如下:
0.0
1.0
0.0
45.0

相關文章