Python For循环多次返回

2022-01-19 00:00:00 python return printing

问题描述

我应该用 python 为我的一门计算机科学课程编写一个函数.该函数应该接受一个 startValue 然后递增它直到达到 numberOfValues .到目前为止,这是我的功能:

I am supposed to write a function for one of my computer science classes in python. The function is supposed to take in a startValue and then increment it until numberOfValues is reached. This is my function so far:

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

The problem is that the output is only 13. How do I make it so it returns a number each time it increments. For example, 5, 9, 13? I have been having this problem with my previous functions but I have just been adding and removing things without much logic to get it to work. What am I doing wrong?


解决方案

这是 发电机.

长话短说,只需使用 yield 而不是 return:

Long story short, just use yield instead of return:

def nextNValues(startValue, increment, numberOfValues):
  result = int(0)
  for i in range(0, numberOfValues):
    increase = i * increment
    result = startValue + increase
    yield result

您的代码的客户端可以在一个简单的循环中使用它:

The clients of your code can then use it either in a simple loop:

for value in nextNValues(...):
  print(value)

如果需要,他们可以通过 list 转换得到一个列表.例如,如果需要打印结果:

Or they can get a list if needed by converting it with list. For example, if one needed to print the result:

print(list(nextNValues(...)))

相关文章