通过while循环错误传递值

时间:2013-07-19 06:03:22

标签: python list parsing while-loop

我在通过while循环传递值时遇到问题。我在下面编写了一些伪代码仍在我仍然不确定如何实现结果,但我已经附上我的代码,如果它可以帮助。通过while循环传递值的错误部分

首先,我的双重值列表如下。其中涉及名称,东方,北方

Stationlist = [['perth.csv','476050','7709929'],['sydney.csv','473791','7707713'],['melbourne.csv','46576','7691097']]

这是我正在使用的代码:

Import math 
global Eastingbase
global Northingbase
Eastingbase=476050
Northingbase= 7709929

Def calculateDistance (northingOne, eastingOne, northingTwo, eastingTwo):
    Base =100000
    deltaEasting = eastingTwo -eastingOne
    deltaNorthing = northingTwo -northingOne

    Distance = (deltaEasting**2 + deltaNorthing**2) **0.5
    If Distance < Base: 
     Return Distance

Def Radius():
1000

L=0
while L <= Len(Stationlist): 
    if calculateDistance(Eastingbase, Northingbase, Stationlist(row L, column 2),Stationlist(row L, column 3)) < Radius: 
        Relevantfilename = StationList (row L, column 1)
        print Relevantfilename
        L = +1

我的错误是我不确定如何将值从站列表传递到while循环,然后继续循环。我已经尝试使用双列表理解I.e [0] [1]传递名称,但它不起作用。另外向L添加加1似乎不会继续循环。有没有办法将所有值从一行传递到while循环并测试它。即将Perth.csv传递到Stationlist(第L行,第1列),476050传递到Stationlist(第L行,第2列),将7709929传递到Stationlist(第L行,第3列)

一旦完成,然后重复墨尔本和悉尼数据

2 个答案:

答案 0 :(得分:2)

您的代码中存在许多错误/误解:

  • You should仅对类使用大写名称。事实上,它甚至不适用于ImportIf之类的东西(因为它们是陈述,需要拼写正确:p)

  • 要访问列表中的元素,您可以使用索引(不是列表理解,因为您解释了(这实际上是一个完全不同的东西))。例如,print stationlist[0][2]访问列表中的第一项,然后访问子列表中的第三项(请记住索引从0开始)

  • 如果要在数字中添加一个,请执行L += 1(注意符号的顺序)。这与L = L + 1

  • 相同
  • 我认为你误解了功能(特别是你的半径)。您需要做的只是radius = 1000。无需任何功能:)。

  • 其他一些语法/缩进错误。

此处不应使用while循环。 for-loop 更好:

for station in stationlist: # Notice the lowercase
    if calculateDistance(eastingbase, northingbase, station[1], station[2]) < radius:
        print station[0]

请注意我如何使用Python的Indexing从列表中获取元素。我们不需要包含该行,因为我们使用的是for循环,它遍历列表中的每个元素。

答案 1 :(得分:0)

您应该使用L += 1来增加索引。但是不建议在Python中使用它。并且Radius = 1000也不需要定义函数。

for each in Stationlist:    
    if calculateDistance(Eastingbase, Northingbase, each[1], each[2]) < Radius: 
        Relevantfilename = each[0]
        print Relevantfilename

我不知道为什么你的脚本中的关键词以大写字母开头。 Python区分大小写,所以它是错误的。并且不需要global