python练习4:isinstance
2018-04-09 本文已影响0人
梁老施
定义一个函数num(a,b,c),接受3个参数,并返回
一元二次方程: ax2 + bx + c = 0
的所有解
(一):首先,一元二次方程的公式为: A=bb-4ac,
方程的解为 x1=((-b)+math.sqrt(A))/(2a)
x2=((-b)-math.sqrt(A))/(2*a)
::计算平方根可以调用math.sqrt()函数
(二):因为 Isinstance的用法是用来判断一个量是否是相应的类型,接受的参数一个是对象加一种类型。所以要判断 num(a,b,c)的类型
def num(a,b,c):
if not isinstance(a,(int,float)):
return TypeError('参数a必须为实数')
if not isinstance(b,(int,float)):
return TypeError('参数b必须为实数')
if not isinstance(c,(int,float)):
return TypeError('参数c必须为实数')
(三):
当A>=0的情况下,方程有解:
并返回 x1 ,x2
当A<0的情况下,方程无解
A = b * b - 4*a*c
x1=((-b)+math.sqrt(A)/(2*a))
x2=((-b)-math.sqrt(A)/(2*a))
if A==0:
return x1
elif A>0:
return x1,x2
else:
return ("该方程无解")
(四)结合起来
import math
def num(a,b,c):
if not isinstance(a,(int,float)):
return TypeError('参数a必须为实数')
if not isinstance(b,(int,float)):
return TypeError('参数b必须为实数')
if not isinstance(c,(int,float)):
return TypeError('参数c必须为实数')
A = b * b - 4*a*c
x1=((-b)+math.sqrt(A)/(2*a))
x2=((-b)-math.sqrt(A)/(2*a))
if A==0:
return x1
elif A>0:
return x1,x2
else:
return ("该方程无解")