我正在尝试用发电机练习。我以为我有一个很好的处理,但这个发电机:
x = int(input("How many numbers do you want to add?: "))
def gennextfive(n):
num=int(input('what number do you want to start at?: '))
while num <n+num:
yield num
num += 1
sum_of_next_n = sum(gennextfive(x))
print(sum_of_next_n)
每次运行时,都会陷入无限循环。问题似乎发生在第5行,但我不知道我能做些什么来解决它。任何帮助将不胜感激。
答案 0 :(得分:1)
num
始终小于n + num
,只要n
和num
都是正数。您在每次迭代时递增num
,这是不正确的。
您应该使用计数器,并在柜台上进行比较:
def gennextfive(n):
num = int(input('what number do you want to start at?: '))
i = num
while i < n + num:
yield i
i += 1
由于您知道要迭代的次数,因此可以对for
对象使用计数控制range
循环。所以,更短的版本是:
for i in range(num, num + n):
yield i
yield from range(num, num + n)