我刚刚读了一些关于如何处理Python中stopietition错误的文章,我在解决我的特定示例时遇到了困难,我只想用我的代码从1到20打印出来,但它打印出了错误stopietition。我的代码是:(我是个新手,所以请不要阻止我。)
def simpleGeneratorFun(n):
while n<20:
yield (n)
n=n+1
# return [1,2,3]
x = simpleGeneratorFun(1)
while x.__next__() <20:
print(x.__next__())
if x.__next__()==10:
break
你可以试试,但这里的问题是重复。
任何时候你使用
x.__next__()
它都会得到下一个产生的数字-你不会检查每个产生的数字,10被跳过-所以它会在20后继续运行并中断。修复:
首先,在每个循环迭代中,通过对
__next__()
进行3次单独的调用来推进迭代器3次,因此if x.__next__()==10
可能永远不会被命中,因为第10个元素可能已经在前面被使用了。同样的,也会错过你的while状态。其次,python中通常有更好的模式,您不需要直接调用
next
。例如,如果您有有限的迭代器,请使用For循环在StopIteration时自动中断:相关问题 更多 >
编程相关推荐