我正在用Python编写一个程序,但我无法通过这个异常
from cmath import sqrt;
a = int(input("Podaj pierwsza liczbe: "));
b = int(input("Podaj druga liczbe: "));
c = int(input("Podaj trzecia liczbe: "));
if a<=0:
print("Nie można policzyc delty");
else:
delta = sqrt(b*b-4*a*c);
print("delta wynosi:",delta);
if (delta <= 0):
print("Nie obliczymy miejsca zerowe");
elif (delta == 0):
x = -b/(2*a);
print("Miejsce zerowe wynosi:",x);
elif (delta >= 0):
x1 = ((-b-delta)/(2*a));
x2 = ((-b+delta)/(2*a));
print("Pierwsze miejsce zerowe wynosi:",x1);
print("Drugie miejsce zerowe:",x2);
Traceback (most recent call last):
File "C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/Rownanie kwadratowe.py", line 14, in <module>
if (delta <= 0):
TypeError: '<=' not supported between instances of 'complex' and 'int'
你能帮我解决这个问题吗?在
sqrt
不能产生负结果。当传递一个负数时,您将得到一个复杂类型,它与整数/浮点数不相比较,这解释了错误消息。在现在你真正的问题是:
您必须测试
b*b-4*a*c
的符号(它已经是判别式了),并且只有在正值时才执行平方根。在(顺便说一句,去掉后面的分号)
相关问题 更多 >
编程相关推荐