|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 ='')
复制代码 |
|