0

コンピューター サイエンスのクラスの 1 つの関数を 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 に答える