当前位置:首页>python>python 每周一练 精选题(三十二) 精选题

python 每周一练 精选题(三十二) 精选题

  • 2026-09-10 18:53:22
python 每周一练 精选题(三十二) 精选题

题目:判断三点能否构成三角形及计算周长和面积

问题描述

有一个平面,上面有三个点,坐标分别为(x1,y1)、(x2,y2)、(x3,y3)。我们需要:

  1. 判断这三个点能否构成三角形。

  2. 如果不能构成三角形,输出 Impossible。

  3. 如果可以构成三角形,输出其周长和面积,结果保留小数点后2位。

输入输出格式

输入格式:

在一行中顺序给出六个 [-100, 100] 范围内的数字,即三个点的坐标 x1,y1,x2,y2,x3,y3。

输出格式:

  • 若这3个点不能构成三角形,则在一行中输出 Impossible;

  • 若可以,则在一行中输出该三角形的周长和面积,格式为 L = 周长, A = 面积,输出到小数点后2位。

输入样例1

4 5 6 9 7 8

输出样例1

L = 10.13, A = 3.00

输入样例2

4 6 8 12 12 18

输出样例2

Impossible

参考分析

1. 共线判断(能否构成三角形)

三个点不能构成三角形的唯一情况是:三点共线。

我们可以通过向量叉积来判断三点是否共线。设向量 AB=(x2−x1,y2−y1),向量 AC=(x3−x1,y3−y1)。

它们的叉积为:它们的叉积为:cross=(x2−x1)×(y3−y1)−(y2−y1)×(x3−x1)

  • 如果 cross 的值为 0(或非常接近 0,考虑到浮点数精度问题),则三点共线,不能构成三角形。

  • 否则,三点不共线,可以构成三角形。

2. 周长计算

三角形的周长就是三条边长度之和。我们可以使用两点间距离公式来计算每条边的长度:

在Python中,math.hypot() 函数可以直接帮我们完成这个计算。

3. 面积计算

我们可以使用著名的海伦公式来计算三角形的面积。

  1. 先计算半周长 s = 周长/2。

  2. 再代入公式:

其中 a, b, c是三角形的三条边长。

考查知识点

  1. 几何基础:理解三点共线的判定条件、两点间距离公式和三角形面积公式。

  2. 浮点数精度处理:在判断共线时,不能直接与0比较,而是要判断其绝对值是否小于一个很小的数(如 10^-8)。

  3. 数学公式转化为代码:将抽象的数学公式,如海伦公式,转化为可执行的Python代码。

代码实现

import mathcoords = list(map(float, input().split()))x1, y1, x2, y2, x3, y3 = coords# 计算向量叉积,判断三点是否共线cross = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)if abs(cross) < 1e-8:    print("Impossible")else:    # 计算三边长度    d1 = math.hypot(x2 - x1, y2 - y1)    d2 = math.hypot(x3 - x2, y3 - y2)    d3 = math.hypot(x1 - x3, y1 - y3)    # 周长    perimeter = d1 + d2 + d3    # 海伦公式求面积    s = perimeter / 2    area = math.sqrt(s * (s - d1) * (s - d2) * (s - d3))    # 格式化输出    print(f"L = {perimeter:.2f}, A = {area:.2f}")

代码说明

  1. 输入处理:读取一行输入,将其转换为6个浮点数,分别代表三个点的坐标。

  2. 共线判断:计算向量叉积 cross,如果其绝对值小于 10^-8,则判定为共线,输出 Impossible。

  3. 边长计算:使用 math.hypot() 函数计算三条边的长度。

  4. 周长与面积计算:将三边长相加得到周长,再使用海伦公式计算面积。

  5. 格式化输出:使用 :.2f 格式化字符串,确保输出结果保留两位小数,符合题目要求。

最新文章

随机文章