用python寫一個解一元二次方程的類
阿新 • • 發佈:2021-01-03
第一步 明確需要的變數
要解一元二次方程,肯定先把它化成一般式:ax^2+bx+c=0,我們需要用到的引數是a,b,c還有一個判別式”▲“ ,可以隨意給個名字,我這裡給的g。
第二步 建立一個類
類的名字一般首字母大寫,然後以冒號結尾,程式碼如下:
class Equation:
a = int(input('輸入a值:'))
b = int(input('輸入b值:'))
c = int(input('輸入c值:'))
g = 0
這裡的a,b,c,g就是建立的類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。
第三步 建立類的方法
類的方法與普通的函式只有一個特別的區別——它們必須有一個額外的第一個引數名稱, 按照慣例它的名稱是 self(可以用其他的)。
第一個方法 計算出判別式的值
在方法裡引用變數要用self.+變數名,然後根據python的語法打出計算公式,注意縮排,如下:
def getDiscriminant(self):
print('判別式等於')
print(self.b * self.b - 4 * self.a * self.c)
self.g = self.b * self.b - 4 * self.a * self. c
第二個方法 計算根的值
公式法直接寫出來,注意縮排,:
def getRoot1(self):
if self.b * self.b - 4 * self.a * self.c >= 0:
print('第一個實根為:')
print((-self.b + self.g ** 0.5) / (2 * self.a))
else:
print("此方程無實根。")
如果沒有實根就直接列印無根就行了。
第二個根也是一樣的:
def getRoot2(self) :
if self.b * self.b - 4 * self.a * self.c >= 0:
print('第二個實根為:')
print((-self.b - self.g ** 0.5) / (2 * self.a))
else:
return 0
如果無實根,第一個已經列印了,所以我們這裡返回0。
最後一步 我們呼叫這個類
先例項化這個類,再依次訪問類的方法,如下:
zxc = Equation()
zxc.getDiscriminant()
zxc.getRoot1()
zxc.getRoot2()
執行結果
總結
建立類,在寫出你在整個類要呼叫的類變數,建立類方法,方法裡可建立只在本方法使用的變數,此外注意縮排。最後例項化,訪問類屬性。
ps:新手學python,第一次寫部落格,沒有排版,沒有什麼技術含量,純粹分享學習,希望大佬們指出我的不足之處。