python - 二次函数的根 : math domain error

标签 python python-3.x math square-root

我想定义一个返回根值的函数。它应该总是返回一些东西。

如果 b**2 - 4ac < 0,那么它应该返回 [ ],但它显示为错误。

我的代码现在是这样的:

    from math import*
    def solve(a, b, c):
        x = sqrt(b**2 - 4*a*c)

        if x > 0:
           x1 = (-b + x)/(2*a)
           x2 = (-b - x)/(2*a)
           return [x1, x2]

        elif x == 0:
           x1 = x2 = -b/(2*a)
           return [x1]

       else:
           return []

最佳答案

对于负数,math.sqrt 未定义,因此返回 ValueError

如果您希望返回负数的复数平方根,请使用 x**0.5:

x = (b**2 - 4*a*c)**0.5

或者使用cmath.sqrt实现:

from cmath import sqrt

x = sqrt(b**2 - 4*a*c)

关于python - 二次函数的根 : math domain error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671180/

相关文章:

Python subprocess.check_call - 如何将 stdout 和 stderr 定向到_bo​​th_ 屏幕和日志文件?

python - 为什么 Django 不再将 mysqldb 视为有效后端?

python - 需要在分组后获得列中的排名值

ruby - 给定数的所有因数

python - 如何使用 pyopencv_to 函数?

c++ - 包括 Python.h 错误 : initconfig. h 未找到

Python:查找相同的文件并将它们分组

c# - 具有不同结果的摊销时间表计算

math - 根据索引查找 X 和 Y

python - 检查文件中的数据是否重复 (Python)