python - 为什么我不断收到 ValueError:Python 中的数学域错误?
问题描述
所以我在 Python 中制作了一个二次方程求解器,当计算发生时,出现了一个错误,我不确定发生了什么。
from math import sqrt
a = float(input("a: "))
b = float(input("b: "))
c = float(input("c: "))
Z = (b * b) - (4 * a * c)
x1 = ((-b) + float(sqrt(Z))) / (2 * a)
x2 = ((-b) - float(sqrt(Z))) / (2 * a)
print("x = " + str(x1))
print("x = " + str(x2))
这是代码。
解决方案
这可能是因为如果(4 * a * c)
> (b * b)
, Z 变为负数,负数的平方根导致虚数。math.sqrt()
不带负参数。编辑:正如@jakub 所说,您可以尝试获取绝对值的平方根。
推荐阅读
- ios - 检测是否从 voip 应用程序在蓝牙耳机上选择了挂断按钮
- r - 从具有多个字符的列表中创建单个字符变量
- macos - 将 vagrant 升级到 2.1.1 后,vagrant synced_folder 无法正常工作
- c# - 使用字符串盐生成密码哈希
- r - 拆分数据框并保留共享列
- graphql - GraphQL 是否将 null 解释为真实?
- sql - 别名后的括号
- linkedin - WhereHows, wherehows-common 构建错误(创建的工作太多)
- django - 如何在views.py中获取来自urls.py的参数
- selenium-webdriver - 无法点击 facebook 应用权限页面