python3 定義向量運算

2022-02-26 22:08:19 字數 1815 閱讀 4999

from math import

hypot

#定義向量的構造方法

class

vector:

def__init__(self,x=0,y=0):

self.x=x;

self.y=y;

'''__repr__是python的內建方法,他能將乙個物件用字串的形式表達出來

%r用rper()方法處理物件 輸出結果 'content'

%s用str()方法處理物件 輸出結果 content 不帶引號

如果你只想實現這兩個特殊方法中的乙個,__repr__ 是更好的選擇,因為如果乙個物件

沒有 __str__ 函式,而 python 又需要呼叫它的時候,直譯器會用 __repr__ 作為替代

'''def

__repr__

(self):

return

'vector(%r,%r)

' %(self.x,self.y)

'''定義__abs__方法

返回hypot函式的運算結果

hypot() 返回歐幾里德範數 sqrt(x*x + y*y)。

'''def

__abs__

(self):

return

hypot(self.x,self.y)

'''bool(abs(self)) 把模值變成了布林值

我們對 __bool__ 的實現很簡單,如果乙個向量的模是 0,

那麼就返回 false,其他情況則返回 true。

如果想讓 vector.__bool__ 更高效,可以採用這種實現:

def __bool__(self):

return bool(self.x or self.y)

'''def

__bool__

(self):

return

bool(abs(self))

'''__add__ 和 __mul__,這兩個方法的返回值都是新建立的向量物件,

other代表其他向量物件,

其返回值都是靠運算子 + 或者 * 實現的運算結果

'''def

__add__

(self, other):

x=self.x+other.x

y=self.y+other.y

return

vector(x,y)

def__mul__

(self,scalar):

return vector(self.x*scalar,self.y*scalar)

#建立兩個向量例項 v1 v2

print('

*************************====輸出兩個向量加運算********************====')

v1=vector(2,4)

v2=vector(2,1)

print(v1+v2)

print('

*************************====輸出單個向量歐幾里德運算********************====')

#求該向量的歐幾里得範數

v=vector(3,4)

print

(abs(v))

print('

*************************====輸出單個向量的標量乘法運算********************====')

print(v*3)

print(abs(v*3)) #

(3*3)(3*3) +(4*3)(4*3) 的結果開方

python3運算子 Python3 運算子

python3 運算子 python3 支援以下型別運算子 算術運算子 比較 關係 運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運算子 運算子優先順序 算術運算 a b 2,3 運算子說明 示例加 將兩個物件相加 a b 結果 5 減 將兩個物件相減 a b 結果 1 乘 將兩個物件相...

python3運算子 Python3運算子

什麼是運算子?本章節主要說明python的運算子。舉個簡單的例子 4 5 9。例子中,4 和 5 被稱為運算元,稱為運算子。python語言支援以下型別的運算子 算術運算子 比較 關係 運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運算子 運算子優先順序 接下來讓我們乙個個來學習pyth...

python3 定義函式

在python中,定義乙個函式要使用def語句,依次寫出函式名 括號 括號中的引數和冒號 然後,在縮排塊中編寫函式體,函式的返回值用return語句返回。我們以自定義乙個求絕對值的my abs函式為例 def my abs x if x 0 return x else return x 請自行測試並...