如何在Python中的负数之前添加括号

时间:2019-09-02 21:32:59

标签: python

我建立了一个项目,该项目计算二次方程式并找到解决方案。我已经输入了abc的值。当我输入值时,将出现完整的二次方程式。例如,我输入a:2b:3c:4,它显示为2x2+3x+4。现在问题出在负数上。如果我给b-3的值,而给c-4的值,则二次方程看起来像这样:2x2+-3x+-4。现在,我希望它以这种形式出现: 2x2+(-3)x+(-4)。有人可以帮忙吗?

这是我的代码:

a=int(input("Enter the value of a:"))
b=int(input("Enter the value of b:"))
c=int(input("Enter the value of c:"))
d = b**2-(4*a*c)
if b>0 and c>0:
    print("The quadratic equation is : " + str(a) + "x2+" + str(b) + "x+" + str(c))
elif b<0 and c<0:
    print("The quadratic equation is : " + str.format(a) + "x2+" + str(b) + "x+" + str(c))

4 个答案:

答案 0 :(得分:2)

您可以定义一个函数,该函数将在数字为负数时添加括号,并使用其代替str()

def fmt_num(x):
    return str(x) if x >= 0 else "({})".format(x)

...

print("The quadratic equation is : " + fmt_num(a) + "x2+" + fmt_num(b) + "x+" + fmt_num(c))

答案 1 :(得分:2)

如果您希望它更具可读性,那就是另一种选择:

def beauty(coeff, i):

    if(coeff == 0): return ''

    if(i == 2):

        if(coeff ==  1): return  "x\u00B2"
        if(coeff == -1): return "-x\u00B2"
        return f"{coeff}x\u00B2"

    if(i == 1):

        if(coeff ==  1): return "+x"
        if(coeff == -1): return "-x"
        if(coeff  >  0): return f"+{coeff}x"
        return f"{coeff}x"

    if(i == 0):

        if(coeff >  0): return f"+{coeff}"
        return f"{coeff}"


def PrintQuadratic():

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

    print(f"{beauty(a,2)}{beauty(b,1)}{beauty(c,0)}")

PrintQuadratic()
a: 7
b: 9
c: 13
→ 7x²+9x+13

PrintQuadratic()
a: -1
b:  1
c:  0
→ -x²+x

PrintQuadratic()
a: 4
b: -2
c: 1
→ 4x²-2x+1

更长一些,但是打印效果很好。

答案 2 :(得分:1)

您可以通过将整数n映射为str(n)(如果为正数)或(-str(n))(如果为负数)的函数,以更好的方式利用Python的字符串格式:< / p>

def f(n):
    return str(n) if n >= 0 else '(%d)' % n

print("The quadratic equation is : {0}x2+{1}x+{2}".format(f(a), f(b), f(c)))

我应该建议的一种更好的格式是在操作数之间实际放置数字的符号而不是静态的+,并避免括号:

def f(n):
    return ('+' if n >= 0 else '-') + '%d' % abs(n)

eq_f = '{0}x2{1}x{2}'

print("The quadratic equation is : " + eq_f.format(f(a), f(b), f(c)))

输出(示例):

Enter the value of a:-1
Enter the value of b:5
Enter the value of c:-4
The quadratic equation is : -1x2+5x-4

答案 3 :(得分:0)

在第二个测试中,只需将每个var和chnge +添加()到-,因为+与-=-

a=int(input("Enter the value of a:"))
b=int(input("Enter the value of b:"))
c=int(input("Enter the value of c:"))
d = (b)**2-(4*(a)*(c))
if b>0 and c>0:
    print("The quadratic equation is : " + str(a) + "x2+" + str(b) + "x+" + str(c))
elif b<0 and c<0:
    print("The quadratic equation is : " + str.format(a) + "x2" + str(b) + "x" + str(c))