我在通过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列)
一旦完成,然后重复墨尔本和悉尼数据
答案 0 :(得分:2)
您的代码中存在许多错误/误解:
You should仅对类使用大写名称。事实上,它甚至不适用于Import
和If
之类的东西(因为它们是陈述,需要拼写正确: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
。