0

我应该在 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?我以前的函数一直有这个问题,但我只是在没有太多逻辑的情况下添加和删除东西来让它工作。我究竟做错了什么?

4

3 回答 3

3

这是生成器的完美用例。

长话短说,只需使用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(...)))
于 2013-10-06T20:59:29.877 回答
1

你应该建立一个清单。每次通过迭代,将数字附加到列表中。然后,最后,只需返回列表。

于 2013-10-06T20:57:55.477 回答
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
于 2013-10-06T21:01:41.860 回答