二次方程的错误答案

5
我想知道为什么我的Python代码无法解决二次方程问题。我已经查看过它,没有发现任何错误。
print("This program will solve quadratic equations for you")

print("It uses the system 'ax**2 + bx + c'")

print("a, b and c are all numbers with or without decimal \
points")

print("Firstly, what is the value of a?")

a = float(input("\n\nType in the coefficient of x squared"))

b = float(input("\n\nNow for b. Type in the coefficient of x"))

c = float(input("\n\nGreat. now what is the c value? The number alone?"))

print("The first value for x is " ,(-b+(((b**2)-(4*a* c))* * 0.5)/(2*a)))

print("\n\nThe second value for x is " ,(-b-(((b * * 2)-(4*a*c))** 0.5)/(2*a)))

当a=1,b=-4和c=-3时,我期望得到-1和4,但实际得到的是5.5和0.5。


你遇到了什么错误?同时,期望的输出是什么?而你实际获得的又是什么呢? - Leb
大家好,感谢你们的反馈!知道有人愿意帮忙真的很鼓舞人心。所以发生了什么事情呢,当a=1 b=-3和 c=-4 我期望得到的是-1和4,但实际上我得到的是5.5和0.5。 - Michael Dunwoody
@MichaelDunwoody 试着在Python解释器中只输入最少的内容,就像我在我的回答中展示的那样。然后从终端复制粘贴到这里,并向我们解释哪些部分与您想要的不同。 - CrazyCasta
@CrazyCasta 谢谢。我把你的公式复制到终端,当a=1,b=-4和c=3时,我得到了5.5而不是4。 - Michael Dunwoody
1个回答

10

你的问题出在尝试求解二次方程公式的那一部分:

(-b+(((b**2)-(4*a* c))* * 0.5)/2*a)

问题在于星号*和斜杆/的优先级相同,因此您正在除以2,然后乘以a。另外,您的括号不正确,因此我减少了不必要的括号并移动了错误的括号。简而言之,在除法之前,-b没有与平方根组合在一起。您需要的是:

(-b+(b**2-4*a*c)**0.5)/(2*a)

附言:为了提出问题,最好以以下形式发问:

>>> a = 2
>>> b = 1
>>> c = 3
>>> (-b+(((b**2)-(4*a* c))* * 0.5)/2*a)
got blah, expected blam

因为其他的打印和输入都没有问题(你应该能够相当容易地解决)。


2
同时,使用**操作符时,**之间不应有空格。 - khelwood
@khelwood 嗯,我只是假设他发布的代码在语法上是正确的,并且Python不关心空格。好发现。 - CrazyCasta
是的,我加了空格,因为这个网站把两个星号都加粗了,而没有显示它们。 - Michael Dunwoody
如果您将它放在代码块中(就像您所做的那样),它不会将其解释为粗体格式。 - CrazyCasta
@CrazyCasta 谢谢!然而我仍然得到了错误的解决方案。公式是(-b-(((b2)-(4ac)) 0.5)/(2*a)),我已经编辑了问题以显示错误。再次感谢您的帮助! - Michael Dunwoody
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接