导入 cmath模块,计算复杂数学运算

eg:
我们计算二次方程式 ax**2 + bx + c = 0

代码如下:

import cmath

a = float(input('输入 a: '))
b = float(input('输入 b: '))
c = float(input('输入 c: '))

d = (b**2) - (4*a*c)

# 两种求解方式
sol1 = (-b-cmath.sqrt(d))/(2*a)
sol2 = (-b+cmath.sqrt(d))/(2*a)

print('结果为 {0} 和 {1}'.format(sol1,sol2))

看运行结果:

python-二次方程_git


但是如果输入0会报错,如下:

python-二次方程_git_02


可以完善一下代码:

import math

a = float(input('输入 a: '))
b = float(input('输入 b: '))
c = float(input('输入 c: '))
d = (b**2) - (4*a*c)
if a==0 and b==0 and c==0 :
print("有无穷个解")
elif d >= 0:
x1 = (-b-d/(2*a))
x2 = (-b+d/(2*a))
print('结果为:%.2f,%.2f'%(x1,x2))
else:
print("无解")

python-二次方程_用例_03


为了用例更完善,也可以加一个函数,如果你输入为字符转化为数字:

import math
import unicodedata

def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
unicodedata.digit(s)
return True
except (TypeError, ValueError):
pass
return False