python字符串连接中的占位符

2024-04-25 04:16:44 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在运行一个简单的程序,其中一个组件是使用二次公式的二次函数解算器。我使用cmath module sqrt()方法计算判别式的sqrt,即使判别式是正的,它仍然返回一个复数。虽然当我在一个tkinter标签中显示答案时,我使用%.3f作为一个浮点数,但是它说它不接受它,因为它是一个复数。还有复数占位符吗?在

def quad(a,b,c):
    global answers
    print a,b,c
    disc=b**2
    ac4=4*a*c
    disc-=ac4
    sdisc=sqrt(disc)
    b*=-1
    a2=a*2
    answer=[]
    print a
    if a!=0:
        ans1=(b+sdisc)/a2
        ans2=(b-sdisc)/a2
        if ans1==ans2:
            answer.append(ans1)
            print type(ans1)
            answers.config(text='%.3f' %ans1)
        else:
            answer.append(ans1)
            answer.append(ans2)
            answers.config(text='%.3f , %.3f' %(ans1,ans2))
    elif a==0:
        answers.config(text='Not a Quadratic Function.')

如果a是1和b,c=0,0,则返回复数。。。cmath会返回复数吗??在

熟悉python,虽然对复数还不熟悉,但刚刚开始学习。在

编辑: 我现在使用的是数学模块和特殊情况下的负输入,但是当我使用%.3f时,它不允许我这样做,因为它很复杂。(我用负数的负数的sqrt得到正数的sqrt乘以1j)有占位符来做这个吗?(比如%c??) 谢谢


Tags: textanswerconfiga2sqrtcmathanswers复数
3条回答

Does cmath return complex numbers no matter what??

是的。您需要正确地打印复数,或者使用常规的math.sqrt和特殊情况下的负数输入。在

有多种可能的解决方案。在

首先,您可以使用math,而不是{}。它不会以任何明显的方式对程序的性能产生负面影响。在

否则,如果你知道这个数是真的,你可以使用complex.real:cmath.sqrt(2).real

r = cmath.sqrt(1)
print('%f+i%f' % (r.real, r.imag))

如果您希望数字应该是实数,可以对其进行测试并进行转换:

^{pr2}$

你应该用适合你的问题和浮点运算固有的斜率来代替1e-9。在

相关问题 更多 >