我应该为python中的一个计算机科学课编写一个函数。该函数应该接受一个startValue,然后递增它直到达到numberOfValues。到目前为止,这是我的功能:
def nextNValues(startValue, increment, numberOfValues):
result = int(0)
for i in range(0, numberOfValues):
increase = i * increment
result = startValue + increase
return result
我这样称呼:
print(nextNValues(5,4,3))
问题是输出只有13.如何使它每次递增时返回一个数字。例如,5,9,13?我以前的功能一直存在这个问题,但我刚刚添加和删除没有太多逻辑的东西才能使它工作。我做错了什么?
答案 0 :(得分:2)
这是generators的完美用例。
长话短说,只需使用yield
代替return
:
def nextNValues(startValue, increment, numberOfValues):
result = int(0)
for i in range(0, numberOfValues):
increase = i * increment
result = startValue + increase
yield result
然后,您的代码的客户端可以在一个简单的循环中使用它:
for value in nextNValues(...):
print(value)
或者,如果需要,可以通过list
转换列表来获取列表。
例如,如果需要打印结果:
print(list(nextNValues(...)))
答案 1 :(得分:1)
你应该建立一个清单。每次迭代时,将数字附加到列表中。然后,最后,只需返回列表。
答案 2 :(得分:0)
def nextNValues(startValue, increment, numberOfValues):
result = []
for i in range(0, numberOfValues):
increase = i * increment
#result = startValue + increase
result.append(startValue + increase)
return result