2013-09-24 41 views
0

我在包含的圖像上看到的問題有問題。由於我在Python中所掌握的知識很少,所以我很難找到從這個問題開始的地方。特別是,如何根據該公式製作功能?用戶必須能夠輸入x_i和x_(i-1)的值。所有的答案將不勝感激。我不希望完整的答案,我怎麼可以開始這只是一些想法...根據公式編寫函數(Python)

Here is the question

+0

你知道如何計算總和?你知道如何計算平方根嗎?如果兩者的答案都是「是」,那麼是什麼阻礙了你? – Joni

+0

Python支持列表結構,數組等,所以你想從那裏開始查找Python語法和這些例子。平方根函數只是一個庫調用。總結將是一個Python循環結構,它也很容易找到在線示例。 – lurker

+0

對於你的函數的參數 - 閱讀關於python列表,之後 - 試圖找出如何列出總和(提示 - 閱讀關於列表解析),所以你可以使[4,5]中的列表[4,5] ]和[3,3],如[1 + 3,2 + 3]。 Python是非常有趣的語言,我不認爲你會遇到麻煩寫這個函數 –

回答

3

讓我們打破下來。首先,如何創建功能pathlength?像這樣:

def pathlength(x, y): 
    return 42 # The length is 42 miles 

如您所見,它接受x,y參數在問題中指定。它不是計算答案,而是返回一個制定的答案。更多關於如何在一分鐘內找到答案。

用戶可以調用此功能的方法是,像這樣:

length = pathlength([0, 7, 9, 5, 2, 0], [0, 1, 3, 2, 2, 0]) 

正如你所看到的,我已經通過x值的列表和y值的列表。

現在我們知道如何申報的功能,以及如何調用該函數,所有剩下的就是數學。問題說我們需要總結一系列的條款。我們的第一步是以方便的方式創建這些條款。該系列產品運行從1n-1(即,求和有較少的一個步驟,比我們的數據有

表示值,我們可以用切片的符號:。

x[1:] # The X(i) values from 1 to n-1 
x[:-1] # The X(i-1) values from 1-1 to n-1-1 

,類似的還有y

這將是方便有兩個X值和主題相關的兩個Y值,這是zip工作:

zip(x[1:], x[:-1], y[1:], y[:-1]) 

zip產生元組的列表,每個元組是關係到i特定值的變量。

現在要考慮的i每個值依次爲:

for xi, xi1, yi, yi1 in zip(x[1:], x[:-1], y[1:], y[:-1]): 
    pass 

這個循環遍歷所有條目,但不執行實際的數學。

現在我們需要用勾股定理公式來確定兩個d的距離。

total_distance = 0 
for xi, xi1, yi, yi1 in zip(x[1:], x[:-1], y[1:], y[:-1]): 
    leg_distance = ((xi-xi1)**2+(yi-yi1)**2)**.5 
    total_distance = total_distance + leg_distance 

最後,我們需要的是價值傳達給我們的調用:

def pathlength(x, y): 
    total_distance = 0 
    for xi, xi1, yi, yi1 in zip(x[1:], x[:-1], y[1:], y[:-1]): 
     leg_distance = ((xi-xi1)**2+(yi-yi1)**2)**.5 
     total_distance = total_distance + leg_distance 
    return total_distance 

嗯。還有另一種方法可以做到這一點。許多循環結構可以被替換爲列表解析,因爲這可以。嘗試使用Google python list comprehensionpython generators確定 什麼作用:

def pathlength(x,y): 
    return sum(
     ((xi-xi1)**2+(yi-yi1)**2)**.5 
     for (xi, xi1, yi, yi1) in zip(x[1:], x[:-1], y[1:], y[:-1])) 
0

我沒有看到任何圖像。沒有它就很難回答。

但是如果你需要在一個字符串變換公式來工作的代碼,你需要一個解析器和表達式求值。我建議Google搜索一個Python表達庫,並選擇最適合您的那個。