无法在Python

时间:2018-03-31 09:02:35

标签: python python-3.x area complex-numbers

我写了一个计算三角区域的代码

a = float(input("Enter the first side of triangle: \n"))
b = float(input("Enter the second side of triangle: \n"))
c = float(input("Enter the thrid side of triangle: \n"))

s = (a+b+c) / 2

area = (s*(s-a) * (s-b) * (s-c)) ** 0.5

print("The area of triangle is %0.3f" %area)

我使用的输入值为:25,4556,5544

我收到的错误是:

print("The area of triangle is %0.3f" %area)
TypeError: can't convert complex to float

有些人可以帮我解决这个问题吗?当我输入小数字时,我的代码工作正常,如(5,6,7)。使用Pycharm作为我的IDE。

1 个答案:

答案 0 :(得分:1)

代码不起作用,因为输入边不形成三角形 - s-c。因此,术语assert a+b+c > 2*max(a, b, c) 为负,因此计算平方根会返回复数。

为了确保你有有效的一面,在你拿a,b,c的值来检查之后添加一个断言/验证:

assert all(x>0 for x in (a, b, c))

这基本上确保了两个较小边的总和大于最大边。

顺便说一句,你也可以证明你的双方都是积极的:

marker2.addListener('click', function() {
    var marker_lat = this.getPosition().lat();
    var marker_lng = this.getPosition().lng();

    var save_coord_btn = "<input type='button' onClick='saveCoordinates(marker_lat, marker_lng, 12345)' class='btn' value='儲存經緯度'></input>";

    infowindow.setContent("<div style='text-align:center;'>"+save_coord_btn+"</div>");
    infowindow.open(map, this);
});