【发布时间】:2020-11-11 13:38:40
【问题描述】:
class LinkedList():
def __init__(self):
self.head = None
def loopCheck(self):
global fast
slow = self.head
fast = self.head
while(fast.next!=None):
slow = slow.next
fast = fast.next.next
if slow.data == fast.data:
return True
return False
def lenLoop(self):
if not(self.loopCheck):
print("No loop found")
else:
print(fast.data)
变量fast 在 lenLoop() 函数中未被识别。如何在类中创建全局变量?
【问题讨论】:
-
fast = self.head,为什么不使用类属性,比如self.fast? -
为什么应该是类属性?为什么不能是变量?
-
作为一名程序员,您应该非常、非常、非常努力不使用全局变量。
-
如果要将数据保存在实例中,则需要将其绑定。为此,您需要将其设为
self.fast。否则fast在loopCheck执行后消失 -
您没有在
lenLoop中致电loopCheck。此外,lenLoop似乎命名错误;fast.data的值没有理由以任何方式对应于找到的任何循环的长度。您需要在loopCheck中计算它,并且您可以简单地让loopCheck返回该值,任何非零值表示循环,0 表示正确的线性列表。
标签: python python-3.x linked-list