我正在尝试制作一个二次公式计算器。一切看起来都很好,但是,当我输入一些函数(例如 x^2-2x+1 和 x^2+2x+1)时,当它们有不同的解决方案时,它会给我相同的零。我遇到的另一个问题是,在代码的末尾,format_solution(root),我希望它能够根据符号改变格式。例如,如果零是 (x - 1),我不希望它输入 (x + -1) 而只是 (x - 1);我不知道该怎么做。
import math
import cmath
print('Follow this format: Ax^2 + Bx + C')
a = float(input('Enter A: '))
b = float(input('Enter B: '))
c = float(input('Enter C: '))
#Functions
def qfpositive(a, b, c):
return(-abs(b)+cmath.sqrt(b**2-4*a*c))/2*a
def qfnegative(a, b, c):
return(-abs(b)-cmath.sqrt(b**2-4*a*c))/2*a
def format_solution(root):
if root.real == 0:
return f'(x {root.real})'
# Root is a real number
if root.real > 0:
return f'(x + {root.real})'
elif root.real < 0:
return f'(x {root.real})'
elif root.imag > 0:
# Root has a positive imaginary part
return f'(x {root.real} + {root.imag}i)'
else:
# Root has a negative imaginary part
return f'(x {root.real} - {abs(root.imag)}i)
x1 = qfpositive(a, b, c)
x2 = qfnegative(a, b, c)
print(format_solution(x1))
print(format_solution(x2))
我尝试输入以下代码
if root.real > 0:
return f'(x + {root.real})'
elif root.real < 0:
return f'(x {root.real})'
这样,如果零的格式是正数,则输出(x + #)。如果零的格式是负数,它将给出 (x - #) 而不是 (x + -#)。
问题在于的正负二次方程式求解器函数中使用了
abs(b)
. 虽然在二次方程式中加或减
b
的符号无关紧要,但这会导致两个函数中的计算结果相同,进而产生相同的根。
为了解决此问题,请直接使用
b
,而不要使用
abs(b)
。
对于格式问题,可以检查根的符号,并根据需要包含
+
或
-
号。
以下是更正后的代码:
import math
import cmath
print('请遵循以下格式:Ax^2 + Bx + C')
a = float(input('输入 A:'))
b = float(input('输入 B:'))
c = float(input('输入 C:'))
# 函数
def qfpositive(a, b, c):
return (-b + cmath.sqrt(b**2 - 4*a*c)) / (2*a)
def qfnegative(a, b, c):
return (-b - cmath.sqrt(b**2 - 4*a*c)) / (2*a)
def format_solution(root):
if root.imag == 0:
# 根是实数
if root.real > 0:
return f'(x + {root.real:.2f})'
elif root.real < 0:
return f'(x - {abs(root.real):.2f})'
else:
return '(x)'
else:
# 根有虚部
if root.imag > 0:
return f'(x + {root.real:.2f} + {root.imag:.2f}i)'
else:
return f'(x + {root.real:.2f} - {abs(root.imag):.2f}i)'
x1 = qfpositive(a, b, c)
x2 = qfnegative(a, b, c)
print(format_solution(x1))
print(format_solution(x2))
这些更改实现了以下内容:
-
更正了正负二次方程式求解器函数:
它现在正确地使用
b
而不是abs(b)
来计算不同的根。 -
改进了格式化:
format_solution
函数现在检查根的符号,并在必要时添加+
或-
号,以避免出现(x + -1)
之类的输出。它还会在根有虚部时正确格式化输出。 -
添加了格式说明符:
:.2f
被添加到 f 字符串中以将浮点数的输出限制为两位小数,从而使输出更清晰。
有了这些更正,的二次方程式求解器现在可以正常工作,并为正数和负数根提供正确格式的解。
标签:python,math,code-formatting,algebra From: 78795683