Python 通过while循环传递值时出错

Python 通过while循环传递值时出错,python,list,parsing,while-loop,Python,List,Parsing,While Loop,我在通过while循环传递值时遇到问题。我在下面用一些伪代码进行了编码,但我不确定如何实现这个结果,但如果可以的话,我在下面附上了我的代码。通过while循环传递值的错误部分 首先,我的双重价值清单如下。指的是名字,东距,北距 Stationlist = [['perth.csv','476050','7709929'],['sydney.csv','473791','7707713'],['melbourne.csv','46576','7691097']] 下面是我正在使用的代码: Imp

我在通过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
导入数学
全球东基地
全球北方基地
Eastingbase=476050
Northingbase=7709929
Def计算状态(北向一、东向一、北向二、东向二):
基数=100000
deltaEasting=东向2-东向1
Deltanothing=北向2-北向1
距离=(三角定位**2+三角定位**2)**0.5
如果距离<基准:
返回距离
定义半径():
1000
L=0

而L则应使用
L+=1
来增加索引。但在Python中不建议使用它。而且
Radius=1000
无需定义函数

for each in Stationlist:    
    if calculateDistance(Eastingbase, Northingbase, each[1], each[2]) < Radius: 
        Relevantfilename = each[0]
        print Relevantfilename
对于站点列表中的每个站点:
如果计算距离(东向基地、北向基地、每个[1],每个[2])<半径:
Relevantfilename=每个[0]
打印相关文件名

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

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

  • 类只能使用大写名称。事实上,它甚至不适用于
    Import
    If
    (因为它们是语句,需要正确拼写:p)

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

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

  • 我认为你误解了函数(尤其是半径函数)。您所需要做的就是
    radius=1000
    。不需要函数:)

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

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

for station in stationlist: # Notice the lowercase
    if calculateDistance(eastingbase, northingbase, station[1], station[2]) < radius:
        print station[0]
对于stationlist中的station:#注意小写字母
如果计算距离(东向基地、北向基地、站[1],站[2])<半径:
打印站[0]

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

您没有将L增加1。您正在将其设置为+1。正确的语法是L+=1@andyn谢谢你:)我都没意识到。我面前的手写代码甚至说L+=1,但我还没有转换它。谢谢你的帮助谢谢你的帮助。我已经做了你建议的改变。关于大写,这对我来说太草率了,半径应该是一个变量,而不是一个函数。谢谢你的帮助,所以用for循环替换while循环更容易使用,而且我不需要搜索列:)哇。这将在进一步的编程中非常有用:)我已经应用了更改,但是在deltaEasting=eastingTwo eastingOne中抛出了一个错误,这是。。。不支持的操作类型-:'str'和'int'关于问题是什么/如何解决它有什么想法吗???@user2598164它看起来像
eastingTwo
是一个字符串。您可以使用
int()。因此,您可以执行deltaEasting=int(eastingTwo)-eastingOne
当然是:)谢谢。北距也会发生这种情况,对吗??感谢您的帮助,您的python wizz:)!!!顺便说一句,我是新来的。我需要做些什么才能说问题解决了或结束了还是什么?谢谢你们的帮助。我也不知道为什么关键词要大写。我将使它们保持一致,并将它们全部小写,然后删除全局:)感谢您的支持help@user2598164很高兴看到:)