解题思路:

1、使用求根公式,并对公式进行化简

2、分别讨论b²-4ac大于、小于、等于0的情况

3、当b²-4ac小于0时,由于无实数解,需要进行复数格式化(考虑用format进行输出)

注意事项:

需要注意输出格式,保留三位小数,中途不能取舍,如果中途取舍会对结果造成一定误差,只在最终结果进行取舍。

参考代码:

import math
while True:
    try:
        a, b, c = map(int, input().strip().split())
        dert = (b ** 2) - (4 * a * c)
        if dert > 0:
            x1 = math.sqrt(dert) / (2 * a)
            x2 = math.sqrt(dert) / (2 * a)
            print("x1={:.3f} x2={:.3f}".format((0 - b)+ x1, (0 - b)-x2))
        if dert == 0:
            x1 = math.sqrt(dert) / (2 * a)
            print("x1={:.3f} x2={:.3f}".format((0 - b)+ x1, (0 - b)-x1))
        if dert < 0:
            x1 = math.sqrt(0 - (((b ** 2) - (4 * a * c)) / (4 * a * a)))
            x2 = math.sqrt(0 - (((b ** 2) - (4 * a * c)) / (4 * a * a)))
            print("x1={:.3f}+{:.3f}i x2={:.3f}-{:.3f}i".format((0 - (b / (2 * a))), x1, (0 - (b / (2 * a))), x2))
    except:
        break


 

0.0分

10 人评分

  评论区

看了半天,一直没想明白那个输出里面的b为什么不用除以2a,去看了题目检测才发现,检测的两个都是第三种情况,所以这代码根本就是有错的,还优质,白花时间看了
2022-03-02 16:30:32 | |
  • «
  • 1
  • »