0

我目前正在用 Python 编写一个程序,它将三项式方程分解为二项式方程。但是,问题是每当我计算二项式时,如果它是正数,那么 + 号将不会出现。例如,当我为 b 输入 2 并为 c 输入 -15 时,我得到了输出

二项式是: (x-3)(x5)

如您所见,第二个二项式没有显示 + 号。我怎样才能解决这个问题?

这是我的代码:

import math
print " This program will find the binomials of an equation."
a = int(raw_input('Enter the first coefficient'))
b = int(raw_input('Enter the second coefficient'))
c = int(raw_input('Enter the third term'))
firstbinomial=str(int((((b*-1)+math.sqrt((b**2)-(4*a*c)))/(2*a))*-1))
secondbinomial=str(int((((b*-1)-math.sqrt((b**2)-(4*a*c)))/(2*a))*-1))  
print"The binomials are: (x"+firstbinomial+")(x"+secondbinomial")"

我试过做:

import math
    print " This program will find the binomials of an equation."
    a = int(raw_input('Enter the first coefficient'))
    b = int(raw_input('Enter the second coefficient'))
    c = int(raw_input('Enter the third term'))
    firstbinomial=str(int((((b*-1)+math.sqrt((b**2)-(4*a*c)))/(2*a))*-1))
if firstbinomial<=0:
     sign=""
else:
     sign="+"
    secondbinomial=str(int((((b*-1)-math.sqrt((b**2)-(4*a*c)))/(2*a))*-1))  
if secondbinomial<=0:
     sign=""
else:
     sign="+"
    print"The binomials are: (x"+sign+firstbinomial+")(x"+sign+secondbinomial")"

但是我最终得到:

二项式是: (x+-3)(x+5)

4

2 回答 2

6

您需要使用字符串格式来显示正号,或+在字符串中显式使用:

firstbinomial =  (((b * -1) + math.sqrt((b ** 2) - (4 * a * c))) / (2 * a)) * -1
secondbinomial = (((b * -1) - math.sqrt((b ** 2) - (4 * a * c))) / (2 * a)) * -1

print "The binomials are: (x{:+.0f})(x{:+.0f})".format(firstbinomial, secondbinomial)

# prints "The binomials are: (x-3)(x+5)"

(将值保留为浮点数,但格式不带小数点),或

print "The binomials are: (x+{})(x+{})".format(firstbinomial, secondbinomial)

# prints "The binomials are: (x+-3)(x+5)"

唯一的-显示是因为负值总是与它们的符号一起打印。

于 2013-11-09T00:49:05.543 回答
3

您应该使用字符串格式来生成输出。可以为数字提供"+"格式选项以始终显示其符号,而不仅仅是显示负数:

print "The binomials are: (x{:+})(x{:+})".format(firstbinomial, secondbinomial)

这要求您跳过调用str您计算的整数值firstbinomialsecondbinomial前几行。

如果您需要将值(及其符号)作为字符串,则替代方法可能是使用format函数而不是str

firstbinomial = format(int((((b*-1)+math.sqrt((b**2)-(4*a*c)))/(2*a))*-1), "+")
于 2013-11-09T00:49:19.217 回答