为什么这段代码会打印出无穷大的数字?
Why does this code print infinite numbers?
在这段代码中,为什么当我在 x1 = Chain("6") 中放入一个字符串 "6" 而不是 6 时,它在执行时打印出无限个数字?
class Chain:
def __init__(self, n):
self.n = n
self.counter = 0
def __next__(self):
if self.counter != self.n:
self.counter += 1
else:
raise StopIteration
return self.counter
def __iter__(self):
return self
x1 = Chain("6")
for i in x1:
print(i)
这一行x1 = Chain("6")
设置了self.n = "6"
,这是一个字符串。在对象中,您将 counter
作为整数。整数永远不会等于字符串,因此您的 self.counter != self.n
始终 returns True
并且永远不会输入 else
块。
如果我是你,我会将你的 __init__
修改为:
def __init__(self, n):
self.n = int(n)
self.counter = 0
在这段代码中,为什么当我在 x1 = Chain("6") 中放入一个字符串 "6" 而不是 6 时,它在执行时打印出无限个数字?
class Chain:
def __init__(self, n):
self.n = n
self.counter = 0
def __next__(self):
if self.counter != self.n:
self.counter += 1
else:
raise StopIteration
return self.counter
def __iter__(self):
return self
x1 = Chain("6")
for i in x1:
print(i)
这一行x1 = Chain("6")
设置了self.n = "6"
,这是一个字符串。在对象中,您将 counter
作为整数。整数永远不会等于字符串,因此您的 self.counter != self.n
始终 returns True
并且永远不会输入 else
块。
如果我是你,我会将你的 __init__
修改为:
def __init__(self, n):
self.n = int(n)
self.counter = 0