二次公式:python 将浮点数视为字符串
Quadratic formula: python treating floats as strings
我正在制作一个程序,要求用户输入 a、b 和 c 的值,然后使用这些值使用二次公式计算根。我遇到的唯一问题是 python 将 a 和平方根项视为两个字符串,但它们实际上并未相加。他们之间的+被打印出来了。
这是我的代码:
import cmath
def cubic_formula(a, b, c):
print("x1: " + str((-b-cmath.sqrt(b**2-4*a*c))/(2*a)))
print("x2: " + str((-b+cmath.sqrt(b ** 2 - 4 * a * c)) / (2 * a)))
a = float(input("a: ")) b = float(input("b: ")) c = float(input("c: "))
cubic_formula(a, b, c)
这是输出,说明了我刚才描述的问题:
我不知道如何使加号导致两个数字的实际相加。删除 str() 并且在 print() 中没有字符串并没有改变任何东西。
您看到的是复数,而不是字符串。当判别式 b*b-4*a*c
为负时,解不是实值。虚数单位在 Python 中表示为 j
,复数在 Python 中表示为 (a+bj)
。
您可能想在计算之前检查判别式是否为正,并使用 math.sqrt
函数,其中 returns 一个浮点数,而不是 cmath.sqrt
函数,其中 returns 一个复数.
另请注意,您调用了函数 cubic_formula
,但正在计算 quadratic_formula
。
我把程序分成了几个函数:
- 行列式的计算
- 二次公式
- 获取用户输入
- 打印结果
而且很好。
import cmath
def cal_determinant(a, b, c):
return b * b - 4 * a * c
def quadratic_formula(a, b, c):
det = cal_determinant(a, b, c)
sqrt_det = cmath.sqrt(det)
x1 = (-b - sqrt_det) / (2 * a)
x2 = (-b + sqrt_det) / (2 * a)
return x1, x2
def get_user_input():
coeff_list = []
for coeff_name in ["a", "b", "c"]:
v = input(f"{coeff_name}: ")
v = float(v)
coeff_list.append(v)
return coeff_list
def print_roots(x1, x2):
print(f"x1: {x1}")
print(f"x2: {x2}")
def main():
a, b, c = get_user_input()
x1, x2 = quadratic_formula(a, b, c)
print_roots(x1, x2)
main()
我正在制作一个程序,要求用户输入 a、b 和 c 的值,然后使用这些值使用二次公式计算根。我遇到的唯一问题是 python 将 a 和平方根项视为两个字符串,但它们实际上并未相加。他们之间的+被打印出来了。
这是我的代码:
import cmath
def cubic_formula(a, b, c):
print("x1: " + str((-b-cmath.sqrt(b**2-4*a*c))/(2*a)))
print("x2: " + str((-b+cmath.sqrt(b ** 2 - 4 * a * c)) / (2 * a)))
a = float(input("a: ")) b = float(input("b: ")) c = float(input("c: "))
cubic_formula(a, b, c)
这是输出,说明了我刚才描述的问题:
我不知道如何使加号导致两个数字的实际相加。删除 str() 并且在 print() 中没有字符串并没有改变任何东西。
您看到的是复数,而不是字符串。当判别式 b*b-4*a*c
为负时,解不是实值。虚数单位在 Python 中表示为 j
,复数在 Python 中表示为 (a+bj)
。
您可能想在计算之前检查判别式是否为正,并使用 math.sqrt
函数,其中 returns 一个浮点数,而不是 cmath.sqrt
函数,其中 returns 一个复数.
另请注意,您调用了函数 cubic_formula
,但正在计算 quadratic_formula
。
我把程序分成了几个函数:
- 行列式的计算
- 二次公式
- 获取用户输入
- 打印结果
而且很好。
import cmath
def cal_determinant(a, b, c):
return b * b - 4 * a * c
def quadratic_formula(a, b, c):
det = cal_determinant(a, b, c)
sqrt_det = cmath.sqrt(det)
x1 = (-b - sqrt_det) / (2 * a)
x2 = (-b + sqrt_det) / (2 * a)
return x1, x2
def get_user_input():
coeff_list = []
for coeff_name in ["a", "b", "c"]:
v = input(f"{coeff_name}: ")
v = float(v)
coeff_list.append(v)
return coeff_list
def print_roots(x1, x2):
print(f"x1: {x1}")
print(f"x2: {x2}")
def main():
a, b, c = get_user_input()
x1, x2 = quadratic_formula(a, b, c)
print_roots(x1, x2)
main()