求一元二次方程ax^2+bx+c=0

import cmath
import math
import sys
def get_float(input_msg,allow_zero):
input_n=None
while input_n is None:
try:
input_n=float(input(input_msg))
if not allow_zero and abs(input_n)<sys.float_info.epsilon:   #sys.float_info.epsilon 是ε(最小浮点数精度2.220446049250313e-16) 
print("zero is not allowed")
input_n=None
except ValueError as err:
print(err)
return input_n


print("ax\N{SUPERSCRIPT TWO}+bx+c=0")
a=get_float("enter a:",False)
b=get_float("enter b:",True)
c=get_float("enter c:",True)


x1=None
x2=None
discriminant=(b**2)-(4*a*c)
if discriminant==0:
x1=-(b/(2*a))
else:
if discriminant>0:
root=math.sqrt(discriminant)
else:
root=cmath.sqrt(discriminant)
x1=(-b+root)/(2*a)
x2=(-b-root)/(2*a)
equation_ax="{0}X\N{SUPERSCRIPT TWO}".format(a)
equation_bx="+ {0}X +".format(b) if b else "" 
equation_c="{0}".format(c) if c else ""
equation=("{0}{1} {2} = 0 \N{RIGHTWARDS ARROW}x={3:.2}".format(equation_ax,equation_bx,equation_c,x1))
if x2 is not None:
equation+=" or x={0:.2}".format(x2)
print(equation)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值