我写了一个计算三角区域的代码
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。
答案 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);
});