使用Python列表计算勾股长度?

2024-10-03 19:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将下面的Haskell代码移植到Python中,并收到一个“无效语法”响应。你知道吗

let rightTriangles' = [ (a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, a+b+c == 24]

我的失败尝试如下:

[(i,j,k) for i in range(1,11) for j in range(1,i+1) for k in range(1,j+1) if i**2 + j**2 == k**2 i + j + k == 24]

Python 3.4.4版


Tags: 代码inforifhaskell语法rangelet
1条回答
网友
1楼 · 发布于 2024-10-03 19:31:35

您可能正在寻找:

>>> [
...    (i, j, k) 
...    for i in range(1, 11) 
...        for j in range(i, 11)      # j >= i
...            for k in range(j, 11)  # k >= j 
...                if i**2 + j**2 == k**2 and i + j + k == 24
... ]
[(6, 8, 10)]

请注意,在范围表示法中需要一个逗号,条件之间需要一个and,并且(从第一个条件判断)k应该是三个条件中最大的一个,因此选择范围的方式应该是i <= j <= k。你知道吗

i < j < k将为您节省一些不必要的迭代,因为我们知道斜边严格地比没有等边勾股三角形的边长。你知道吗

相关问题 更多 >