2013-10-06 86 views
0

我應該爲我的一個計算機科學類在python中編寫一個函數。函數應該接受一個startValue,然後增加它,直到達到numberOfValues。這是到目前爲止我的功能:Python for循環多個返回

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

請解決您的壓痕。 – tacaswell

+1

由於你的班級既沒有處理與發電機無關的列表,你確定你必須返回值?也許你的任務是「打印」函數內的值? –

回答

1

你應該建立一個列表。每次迭代時,將該數字附加到列表中。然後,最後,只需返回列表。

+0

我們還沒有真正與列表工作。這個任務是通過for循環來完成的。 – user1881401

+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(...))) 
+0

這沒有奏效。它結束了 user1881401

+1

這是因爲你試圖直接打印它。我展示瞭如何使用它。如果你想打印它,使用轉換到'列表'。 – Denis

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