Python 通过while循环传递值时出错
我在通过while循环传递值时遇到问题。我在下面用一些伪代码进行了编码,但我不确定如何实现这个结果,但如果可以的话,我在下面附上了我的代码。通过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
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很高兴看到:)