Python-如何输出平方根而不是有限小数部分的数字

时间:2017-05-31 07:41:39

标签: python python-2.7

我在Python 2.7中编写一个代码来计算二次方程的根。但是输出的形式为1.41421356237 ....有没有办法生成平方根形式(sqrt(2))?

这是我的代码:

from __future__ import division
import matplotlib.pyplot as plt
import numpy as np
import scipy
import scipy.special as sp
import scipy.integrate as integrate
import pylab as pylab
import math
import cmath

alpha = input('Enter alpha: ')
c = 1/alpha
a = 1
b = 1
d = b**2 - 4*a*c

if d<0:
    s1 = (-b+cmath.sqrt(d)) / (2*a)
    s2 = (-b-cmath.sqrt(d)) / (2*a)
    print "Two Complex Solutions: ",s1, " and",s2
elif d==0:
    s = (-b+math.sqrt(d))/ (2*a)
    print "One real solution: ",s
else:
    s1 = (-b+math.sqrt(d)) / 2*a
    s2 = (-b-math.sqrt(d)) / 2*a
    print "Two real solutions: ",s1," and",s2

这是我需要的平方根形式的输出示例:

Enter alpha: 6
Two real solutions:  -0.211324865405  and -0.788675134595

3 个答案:

答案 0 :(得分:1)

请查看https://en.wikipedia.org/wiki/SymPy的符号计算。

答案 1 :(得分:1)

您可以使用Sympy模块!这是为了这样的事情。

对于您的情况,您可以使用sympy.sqrt代替cmath.sqrt来获取平方根表示。例如:

import sympy
sympy.sqrt(8) # Output: 2*sqrt(2)
sympy.sqrt(8) * sympy.sqrt(3) # Output: 2*sqrt(6)

Here您可以找到该模块的介绍。

答案 2 :(得分:0)

默认情况下,Python是急切的评估。 这意味着您现在将sqrt应用于数字,例如。 SQRT(2)。 它已经失去了它的象征意义,取而代之的是实数。

为了得到你需要的东西,你可以重新定义你的功能来代替字符串 这样python解释器就不会尝试将它评估为数字。

s1 = "-{b}+sqrt({d})/2*{a}".format(b=b,d=d,a=a)
s2 = "-{b}-sqrt({d})/2*{a}".format(b=b,d=d,a=a)

上面的代码部分将生成一个符号而不是数字的字符串。