Python NameError:未定义全局名称“对”
pair是否有内置python模块,我找不到,如果没有,如何解决以下错误Python NameError:未定义全局名称“对”,python,Python,pair是否有内置python模块,我找不到,如果没有,如何解决以下错误 def main (v1): #def find_busy_intervals(v1): if v1 == None or len(v1) == 0 : return None v2 = [] v2.append(pair(v1[0].first,v1[0].second)) for i in xrange(1, len(v1)): x1 = v1[i].first y1 =
def main (v1):
#def find_busy_intervals(v1):
if v1 == None or len(v1) == 0 :
return None
v2 = []
v2.append(pair(v1[0].first,v1[0].second))
for i in xrange(1, len(v1)):
x1 = v1[i].first
y1 = v1[i].second
x2 = v2[len(v2) - 1].first
y2 = v2[len(v2) - 1].second
if y2 >= x1:
v2[len(v2)-1].second = max(y1, y2)
else:
v2.append(pair(x1,y1))
return v2;
if __name__=="__main__":
v1= [(1,5),(3,7),(4,6),(6,8),(10,12),(11,15)]
v2 = main (v1)
print v2
错误:-
C:\Dropbox\scripts>python pythonCSharp.py
Traceback (most recent call last):
File "pythonCSharp.py", line 26, in <module>
v2 = main (v1)
File "pythonCSharp.py", line 9, in main
v2.append(pair(v1[0].first,v1[0].second))
NameError: global name 'pair' is not defined
对于如此简单的东西,不需要有一个模块。您所需的pair类可以使用以下工具轻松构建: 现在,您可以在该代码中使用pair-like,但请注意,v1的元素也必须是pair:
v1 = [pair(1,5), pair(3,7), pair(4,6), pair(6,8), pair(10,12), pair(11,15)]
。。。你不能分配给他们,就像在
v2[len(v2)-1].second = max(y1, y2)
因此,也许您应该使用一个自定义类:
class pair:
def __init__(self, first, second):
self.first = first
self.second = second
虽然最简单的方法是放弃这对元组,使用普通元组,但您需要重新考虑算法,这样您就不需要与赋值v2[lenv2-1]等价的赋值。second=maxy1,y2,因为元组/命名元组不能变异。什么是对?你是说元组吗?…你认为它会做什么?在本例中,您可以通过不引用不存在的对象来解决名称错误。pair应该做什么?如果它只是一个两元素元组,您可以简单地删除它,这样只剩下括号。pair函数是missing@mahdibahri与其说是失踪,不如说是根本不存在。
class pair:
def __init__(self, first, second):
self.first = first
self.second = second