【发布时间】:2013-02-28 08:26:24
【问题描述】:
我也试过寻找答案,但我不明白其他人类似问题的答案...
tfile= open("/home/path/to/file",'r')
def temp_sky(lreq, breq):
for line in tfile:
data = line.split()
if ( abs(float(data[0]) - lreq) <= 0.1
and abs(float(data[1]) - breq) <= 0.1):
T= data[2]
return T
print temp_sky(60, 60)
print temp_sky(10, -10)
我收到以下错误
7.37052488
Traceback (most recent call last):
File "tsky.py", line 25, in <module>
print temp_sky(10, -10)
File "tsky.py", line 22, in temp_sky
return T
UnboundLocalError: local variable 'T' referenced before assignment
第一个打印语句可以正常工作,但第二个就不行了。我曾尝试将 T 设为全局变量,但这使得两个答案相同!请帮忙!
【问题讨论】:
-
为了摆脱UnboundLocalError,if语句必须运行,所以尝试给T一个默认值以便定义T,参考@shx2答案
-
另外,您正在运行整个循环来获取单个值。这样,您的循环将始终返回最后一个匹配的数据实例。您可以通过以相反的顺序阅读代码而不是分配
return T来提高代码效率
标签: python