Discuss / Python / 计算一元二次方程解的本地代码

计算一元二次方程解的本地代码

Topic source

Dreamer_DK

#1 Created at ... [Delete] [Delete and Lock User]
import math

def quadratic(a, b, c):
    k = b*b - 4*a*c
    if k < 0:
        return 'no one'
    if k == 0:
        x = (-b) / (2*a)
        return x
    if k > 0:
        x1 = ((-b +math.sqrt(k)) / (2*a))
        x2 = ((-b -math.sqrt(k)) / (2*a))
        return x1,x2

a = float(input('input a:'))
b = float(input('input b:'))
c = float(input('input c:'))

x = quadratic(a,b,c)
if isinstance(x,(int,float)):
    print ('x=',x)
else:
    print('x1=%d,x2=%d' % x)

Dreamer_DK

#2 Created at ... [Delete] [Delete and Lock User]

应该吧最后一行的%d换成%s才对,不然输出的是int整数,无法得到精确结果。 不过好像使用其他数值例如(25,24,14)会得到一个错误? 排查了下,改成下面的就好了:

import math

def quadratic(a, b, c):
    k = b*b - 4*a*c
    if k < 0:
        return 'True'
    if k == 0:
        x = (-b) / (2*a)
        return x
    if k > 0:
        x1 = ((-b +math.sqrt(k)) / (2*a))
        x2 = ((-b -math.sqrt(k)) / (2*a))
        return x1,x2

a = float(input('input a:'))
b = float(input('input b:'))
c = float(input('input c:'))

x = quadratic(a,b,c)
if isinstance(x,(int,float)):
    print ('x=',x)
elif x == 'True':
    print ('算不出来')
else:
    print('x1=%s,x2=%s' % x)

如果再进一步修改可以得到精确到几位小数的输出。各位可以一试。

请问一下为什么一个解的情况下条件判断是 if isinstance(x,(int,float)): print('x=',x)

Dreamer_DK

#4 Created at ... [Delete] [Delete and Lock User]

一个解的返回值貌似是数字,两个以上就是tuple了。


  • 1

Reply