Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chu vi của một đa giác bằng Python

Giả sử chúng ta có một danh sách các điểm có thứ tự biểu diễn một điểm cuối của đa giác đơn giản trên mặt phẳng 2D. Chúng ta phải tìm chu vi của đa giác này.

Vì vậy, nếu đầu vào giống như point =[(0, 0), (0,5), (3, 5), (3,0)], thì đầu ra sẽ là 16 vì

Chương trình tìm chu vi của một đa giác bằng Python

hai cạnh có độ dài 3 và hai cạnh có độ dài 5 nên 2 * 5 + 2 * 3 =16.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một hàm getInfo (). Điều này sẽ nhận x1, y1, x2, y2
  • trả về căn bậc hai của ((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)) là khoảng cách Euclide
  • giữa (x1, y1) và (x2, y2)
  • Từ phương pháp chính, hãy thực hiện như sau
  • N:=kích thước của điểm
  • (lần đầu tiên, lần đầu tiên):=điểm [0]
  • (presx, prevy):=(firstx, firsty)
  • res:=0
  • đối với tôi trong phạm vi từ 1 đến N-1, hãy thực hiện
    • (nextx, nexty):=points [i]
    • res:=res + getInfo (presx, prevy, nextx, nexty)
    • prevx:=nextx
    • prevy:=nexty
  • res:=res + getInfo (presx, prevy, firstx, firsty)
  • trả lại res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

from math import sqrt
def getInfo(x1, y1, x2, y2):
   return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

def solve(points):
   N = len(points)
   firstx, firsty = points[0]
   prevx, prevy = firstx, firsty
   res = 0

   for i in range(1, N):
      nextx, nexty = points[i]
      res = res + getInfo(prevx,prevy,nextx,nexty)
      prevx = nextx
      prevy = nexty
   res = res + getInfo(prevx,prevy,firstx,firsty)
   return res

points = [(0, 0), (0,5), (3, 5), (3,0)]
print(solve(points))

Đầu vào

[(0, 0), (0,5), (3, 5), (3,0)]

Đầu ra

16.0