2013-09-24 40 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表达库,并选择最适合您的那个。