在 Python 中检查给定区域和斜边是否可能出现直角三角形
假设我们有一个直角三角形的斜边和面积,我们必须找到这个三角形的底和高。如果不可能,则返回False。
因此,如果输入像hypo=10,area=24,那么输出将是(6,8)。
为了解决这个问题,我们将按照以下步骤操作-
hypo_sq:=hypo*hypo
s:=(hypo_sq/2.0)的平方根
maxArea:=使用底数和斜边hypo计算三角形的面积
如果area>maxArea,则
返回错误
左:=0.0,右:=s
而|右-左|>0.000001,做
左:=基础
右:=基础
基数:=(左+右)/2.0
如果使用底数s和斜边hypo>=面积的三角形面积,则
否则,
height:=(hypo_sq-base*base)的平方根并四舍五入到最接近的整数
四舍五入到最接近的基数整数
返回基数和高度
让我们看看以下实现以获得更好的理解-
示例代码
from math import sqrt def calculate_area(b, h): hei = sqrt(h*h - b*b); return 0.5 * b * hei def solve(hypo, area): hypo_sq = hypo * hypo s = sqrt(hypo_sq / 2.0) maxArea = calculate_area(s, hypo) if area > maxArea: return False left = 0.0 right = s while abs(right - left) > 0.000001: base = (left + right) / 2.0 if calculate_area(base, hypo) >= area: right = base else: left = base height = round(sqrt(hypo_sq - base*base)) base = round(base) return base, height hypo = 10 area = 24 print(solve(hypo, area))
输入
10, 24输出结果
(6, 8)