琢磨了一下,自己寫了一段**關於解一元二次方程序。分享給大夥,個人感覺很渣,有不合適的地方還請大家多多指教。
#!/usr/bin/env python
#coding:utf-8
#351-01.py(計算一元二次方程序)
"""solving a quadratic equation
"""import math #呼叫標準庫 math
def equ(a1,b1,c1):#定義答案輸出函式
qqq=(b1*b1)-(4*a1*c1)
if qqq<0:
return false
elif qqq==0:
return -(b1/2*a1)
else:
qqqq=math.sqrt(qqq)
x1=(-b1+qqqq)/(2*a1)
x2=(-b1-qqqq)/(2*a1)
return x1,x2
def funcq(z):#此函式主要解決使用者終端輸入字元檢查,判斷是否為整數。
try:
z=int(z)
return isinstance(z,int)
except valueerror:
return false
aa=0
bb=0
cc=0
print"first you must establish a equation like this\n","ax^2+bx+c=0\n"
while true:#利用while迴圈,不限使用者輸入次數,輸入錯誤則重新輸入!
a=raw_input("please input a \n")
aa+=1
if __name__=="__main__":
if funcq(a) == false:
print"please input a number!\n"
continue
elif int(a)==0:
print"a!=0,please input again!\n"
continue
else:
a2=int(a)
break
while true:
b=raw_input("please input b \n")
bb+=1
if __name__=="__main__":
result1=funcq(b)
if result1==false:
print"please input b number!/n"
continue
else:
b2=int(b)
break
while true:
c=raw_input("please input c \n")
cc+=1
if __name__=="__main__":
result2=funcq(c)
if result2==false:
print"please input c number!/n"
continue
else:
c2=int(c)
break
print"the equation is %dx^2+%dx+%d=0\n"%(int(a),int(b),int(c))
if __name__=="__main__":
answer=equ(a2,b2,c2)
print "the answer is ",answer,"\n it is over!"
總結一下:
個人認為**中用了三個while才解決使用者輸入的問題,假如使用者輸入的常數有很多,那我這個解決方案就很麻煩了,還請大神幫忙指教,謝謝!
Python 解一元二次方程
請定義乙個函式quadratic a,b,c 接收3個引數,返回一元二次方程 ax2 bx c 0的兩個解。coding utf 8 可將quadratic a,b,c 單獨寫為b.py,之後在a.py中通過from b import quadratic呼叫這個函式 import math def ...
Python 解一元二次方程
今天看到廖雪峰老師的python3,看到函式後面的練習 如何解一元二次方程 感覺蠻簡單的就開啟text sblime去試試 糟糕 竟然忘了怎麼求一元二次方程!查資料 終於查好了!開始動手 1,匯入math模組 2.定義函式def n d return math.sqrt d def quadrati...
python解一元二次方程
剛開始碰到這個問題,習慣性地想要用迭代的方式來做,居然忘記了解方程的公式.思路 公式法解方程即可,先計算delta b 2 4ac 若delta 0,則判斷方程無解 為方便起見,忽略複數解 若delta 0,則 import math def quadratic a,b,c delta b 2 4 ...