马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 17671669811 于 2020-3-10 18:08 编辑
问题描述:
一元二次方程ax^2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的实数解:
如果a值为0,根据b值判断方程是否有解并输出,如果a与b同时为0,则输出‘Data’,如果方程无实数解,输出“该方程无实数解”;
如果方程有两个相同的实数解,输出一个解,结果保留2位小数;
如果方程有两个不同的实数解,在一行内按从大到小顺序输出方程的两个解,用空格分隔,结果保留2位小数。
输入格式:
输入三行数据, 每行输入一个实数
输出格式:
方程的解
我的代码,主要思路就是用韦达定理求解,看delta的大小确定是否有解,进行分类讨论,但是运行后显示我的代码不完全正确。实在不清楚错在哪里,请各位大佬指教!
首次发帖,不足之处请指正!import math
a = eval(input())
b = eval(input())
c = eval(input())
delta = math.pow(b,2) - 4*a*c
if a == 0 and b == 0:
print('Data error!')
elif a == 0 and b != 0:
x = -c/b
print(x)
elif delta < 0:
print('该方程无实数解')
else:
x1= (math.sqrt(delta)-b)/(2*a)
x2=-(math.sqrt(delta)+b)/(2*a)
if x1 == x2:
print(round(x1,2))
else:
print(round(x1,2) , round(x2,2) , end ='')
|