Skip to main content
 首页 » 编程设计

python之返回不正确的正数#

2025年05月04日10yjmyzz

我想做的是写一个二次方程求解器,但是当解应该是 -1 时,如 quadratic(2, 4, 2) 它返回 1

我做错了什么?

#!/usr/bin/python 
import math 
def quadratic(a, b, c): 
        #a = raw_input("What\'s your `a` value?\t") 
        #b = raw_input("What\'s your `b` value?\t") 
        #c = raw_input("What\'s your `c` value?\t") 
        a, b, c = float(a), float(b), float(c) 
        disc = (b*b)-(4*a*c) 
        print "Discriminant is:\n" + str(disc) 
        if disc >= 0: 
                root = math.sqrt(disc) 
                top1 = b + root 
                top2 = b - root 
                sol1 = top1/(2*a) 
                sol2 = top2/(2*a) 
                if sol1 != sol2: 
                        print "Solution 1:\n" + str(sol1) + "\nSolution 2:\n" + str(sol2) 
                if sol1 == sol2: 
                        print "One solution:\n" + str(sol1) 
        else: 
                print "No solution!" 

编辑:它返回以下...

>>> import mathmodules 
>>> mathmodules.quadratic(2, 4, 2) 
Discriminant is: 
0.0 
One solution: 
1.0 

请您参考如下方法:

除非自从我上学以来公式发生了变化(一个人永远不会太确定),它是 (-b +- sqrt(b^2-4ac))/2a,你有 b 在你的代码中。

[edit] 我可以建议重构吗?

def quadratic(a, b, c): 
    discriminant = b**2 - 4*a*c 
    if discriminant < 0: 
      return [] 
    elif discriminant == 0: 
      return [-b / (2*a)] 
    else: 
      root = math.sqrt(discriminant) 
      return [(-b + root) / (2*a), (-b - root) / (2*a)] 
 
print quadratic(2, 3, 2) # [] 
print quadratic(2, 4, 2) # [-1]                     
print quadratic(2, 5, 2) # [-0.5, -2.0]