Python For循环多次返回

时间:2013-10-06 20:55:37

标签: python printing return

我应该为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?我以前的功能一直存在这个问题,但我刚刚添加和删除没有太多逻辑的东西才能使它工作。我做错了什么?

3 个答案:

答案 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