【发布时间】:2021-12-22 06:27:24
【问题描述】:
我做了一个函数:generatesequence(如下图)
def generatesequence(start: float, itera: float = 1, stop: float = None):
"""
Generate a sequence, that can have a stopping point, starting point.
"""
__num = start
# if sequence has a stopping point
if stop != None:
# if stop is negative
if stop < 0:
# while num is greater than stop (0 < 5, but 0 > -5)
while __num >= stop:
# yield __num variable (yield = return without exiting function)
yield __num
# add iter to __num
__num += itera
else:
while __num <= stop:
yield __num
__num += itera
else:
# if sequence has no stopping point, run forever
while True:
yield __num
__num += itera
我也做了一个序列类(如下图)
class Sequence:
def __init__(self, start, itera, stop):
self.sequence = generatesequence(start, itera, stop)
self.sequencelength = iterlen(self.sequence)
print(self.sequencelength)
def printself(self):
for i in range(self.sequencelength):
print(next(self.sequence))
但是,当我在 Sequence 实例上运行 printself 时,它给了我一个 StopIteration 错误。我该如何解决这个问题?
【问题讨论】:
-
代替 For i in range(self.sequencelength),使用 for i in self.sequence
标签: python compiler-errors generator