You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python二次方程计算器异常问题:系数A大于1时计算结果错误

问题分析与修复方案

嘿,我一眼就发现问题所在啦!你的二次方程计算器出错的原因很简单——运算优先级搞混了

在Python里,乘法和除法属于同级运算,会按照从左到右的顺序执行。你写的:

x = y2/ 2*A
x1 = y3/2*A

实际执行逻辑是先计算y2/2,再把结果乘以A,但二次方程求根公式里的分母应该是2*A,也就是整个式子要除以(2*A),而不是先除以2再乘A。这就导致当A大于1时,结果被错误地放大了A倍,自然得不到正确解。

修正后的代码

A = float(input("Coefficient A="))
B = float(input("Coefficient B="))
C = float(input("Coefficient C="))
discriminant = B**2 - 4*A*C  # 把变量名改成discriminant更直观,可选

# 关键修复:给2*A加上括号,确保先算乘法再做除法
x = (-B - discriminant**0.5) / (2*A)
x1 = (-B + discriminant**0.5) / (2*A)

print("The answer is x=", x, "or", x1)

验证例子

比如拿A=2,B=4,C=2来测试:

  • 正确的根应该是x=-1(重根)
  • 原代码会计算出(-4 - 0)/2*2 = (-2)*2 = -4,明显错误
  • 修正后的代码计算(-4 -0)/(2*2) = -4/4 = -1,结果正确

另外,你还可以加个判别式的判断逻辑,比如当判别式小于0时提示无实根,这样程序会更健壮哦!

内容的提问来源于stack exchange,提问作者R S

火山引擎 最新活动