如何使用另一个函数的 return 值作为另一个函数的参数?发现名称错误
How to use another function's return value as an argument for another function? Name Error found
我是 python 的初学者,一直被这个问题困扰。我正在尝试使用一个函数的 return 值作为另一个函数的参数,但我会得到一个名称错误:
NameError: name 'azi' is not defined
这是我的代码
def convert(bear1):
azi = []
dms = []
dd1 = []
for x in bear1:
a = x.split(" ")
b = a[1].split("-")
dms = [float(m) for m in b]
d, m, s = dms
dd = d + float(m)/60 + float(s)/3600
if "N" in a and "W" in a:
az = 180 - dd
azi.append(az)
elif "S" in a and "W" in a:
az = dd
azi.append(az)
elif "N" in a and "E" in a:
az = 180 + dd
azi.append(az)
elif "S" in a and "E" in a:
az = 360 - dd
azi.append(az)
return azi
def latdep(dist1, azi):
azi = convert(bear1)
lat = []
dep = []
for dst, ang in zip(dist1, azi):
lat.append(-dst * math.cos(math.radians(ang)))
dep.append(-dst * math.sin(math.radians(ang)))
return lat, dep
谢谢!
定义函数时,必须定义函数将使用哪些变量,def(var1, var2, ...)
。在您的 latdep
函数中,您似乎希望 azi 成为转换函数 returns 的内容,但是您正试图在函数内而不是在 var2 位置定义它。 (如评论所述)你在 latdep 中的第一行会覆盖你的 azi 输入。
IIUC,你想从 latdep 中删除行 azi = convert(bear1)
,并调用如下函数(假设 dist1 和 bear1 已经定义):
latdep(dist1, convert(bear1))
def convert(bear1):
# ...
def latdep(dist1, azi):
# remove the 'azi' line
lat = []
dep = []
for dst, ang in zip(dist1, azi):
lat.append(-dst * math.cos(math.radians(ang)))
dep.append(-dst * math.sin(math.radians(ang)))
return lat, dep
dist1 = # define dist1
bear1 = # define bear1
latdep(dist1, convert(bear1))
只需调用 latdep() 即可,无需使用 azi。
但是你忘了将 bear1 传递给函数
互相改变。
示例:
a, b = latdep(dist1, bear1)
并更改第二个参数:
def latdep(dist1, bear1):
我是 python 的初学者,一直被这个问题困扰。我正在尝试使用一个函数的 return 值作为另一个函数的参数,但我会得到一个名称错误:
NameError: name 'azi' is not defined
这是我的代码
def convert(bear1):
azi = []
dms = []
dd1 = []
for x in bear1:
a = x.split(" ")
b = a[1].split("-")
dms = [float(m) for m in b]
d, m, s = dms
dd = d + float(m)/60 + float(s)/3600
if "N" in a and "W" in a:
az = 180 - dd
azi.append(az)
elif "S" in a and "W" in a:
az = dd
azi.append(az)
elif "N" in a and "E" in a:
az = 180 + dd
azi.append(az)
elif "S" in a and "E" in a:
az = 360 - dd
azi.append(az)
return azi
def latdep(dist1, azi):
azi = convert(bear1)
lat = []
dep = []
for dst, ang in zip(dist1, azi):
lat.append(-dst * math.cos(math.radians(ang)))
dep.append(-dst * math.sin(math.radians(ang)))
return lat, dep
谢谢!
定义函数时,必须定义函数将使用哪些变量,def(var1, var2, ...)
。在您的 latdep
函数中,您似乎希望 azi 成为转换函数 returns 的内容,但是您正试图在函数内而不是在 var2 位置定义它。 (如评论所述)你在 latdep 中的第一行会覆盖你的 azi 输入。
IIUC,你想从 latdep 中删除行 azi = convert(bear1)
,并调用如下函数(假设 dist1 和 bear1 已经定义):
latdep(dist1, convert(bear1))
def convert(bear1):
# ...
def latdep(dist1, azi):
# remove the 'azi' line
lat = []
dep = []
for dst, ang in zip(dist1, azi):
lat.append(-dst * math.cos(math.radians(ang)))
dep.append(-dst * math.sin(math.radians(ang)))
return lat, dep
dist1 = # define dist1
bear1 = # define bear1
latdep(dist1, convert(bear1))
只需调用 latdep() 即可,无需使用 azi。 但是你忘了将 bear1 传递给函数 互相改变。
示例:
a, b = latdep(dist1, bear1)
并更改第二个参数:
def latdep(dist1, bear1):