You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从三角形列表中筛选等腰三角形的Python代码问题求助

问题排查与代码修正

原代码存在的问题:

  • 函数isosceles_1中循环变量定义为value,但判断条件里误用了未定义的变量i,会触发NameError。
  • return isosceles写在循环内部,导致找到第一个符合条件的三角形后就直接返回,无法遍历完所有元素。
  • 列表推导式逻辑错误:调用isosceles_1(valid)会返回整个筛选后的列表,只要列表非空就会被视为True,导致所有原列表元素都被加入isosceles_tri,完全不符合筛选逻辑。
  • 函数职责混乱:这个函数应该用来判断单个三角形是否为等腰,而不是直接处理整个列表。

修正后的代码:

valid = [[10, 105, 65], [13, 100, 67], [94, 77, 9], [35, 125, 20], [22, 4, 154], [60, 27, 93], [70, 40, 70], [37, 64, 79], [99, 14, 67], [128, 26, 26]]

# 定义判断单个三角形是否为等腰的函数
def is_isosceles(triangle):
    # 检查是否有任意两个角相等
    return triangle[0] == triangle[1] or triangle[1] == triangle[2] or triangle[2] == triangle[0]

# 列表推导式筛选所有等腰三角形
isosceles_tri = [tri for tri in valid if is_isosceles(tri)]

# 输出结果
print("筛选出的等腰三角形:", isosceles_tri)
print("数量:", len(isosceles_tri))

代码说明:

  • 重命名函数为is_isosceles,明确其职责是判断单个三角形是否符合条件。
  • 函数接收单个三角形列表作为参数,直接返回布尔值表示是否为等腰三角形。
  • 列表推导式遍历原列表,对每个元素调用判断函数,只保留返回True的元素。
  • 运行后会正确筛选出[70, 40, 70]和[128, 26, 26]这两个等腰三角形,数量为2。

内容的提问来源于stack exchange,提问作者simplemind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:25:17