2016-06-13 133 views
1

請原諒任何錯誤,因爲這是我的第一篇文章。Python - 運行代碼結束(迭代?)只能運行一次

我是一名計算機專業的學生,​​我錯過了幾個星期的教學,所以我沒有爲我的任務做好準備。我正在製作一個需要能夠進行多次計算的人口模型,然後將每次計算的結果添加到相應的列表中。

雖然每次添加到列表中,但我真的無法獲得代碼一遍又一遍地運行(這是否稱爲迭代?)。

據我所知,這是代碼中有問題的一點,我在智慧的結尾試圖讓它工作!

for x in (0, numberGens): 
        juvNew = aduOverGens[-1]*birthRate 
        juvOverGens +=("Gen ", x+1, ": ", juvNew) 
        print (juvOverGens) 

凡numberGens是是代碼應該重複以上的次數,和aduOverGens是包含數據爲第一代某種類型的個人的預定義列表,並且juvNew是計算的結果,每次都應該添加到列表的末尾。當我使用numberGens作爲10 aduOverGens [-1]爲22和birthRate爲2運行代碼時,我期望看到以下結果:10次打印列表juvOverGens並在每次結束時添加一個額外值,這應該是是aduOverGens的最後一個值的兩倍(在這種情況下每次都是相同的,因爲現在還沒有向aduOverGens添加額外的值)。

然而在實踐中,打印的結果是:

['Gen 0: ', 22.0, 'Gen ', 1, ': ', 44.0] 
['Gen 0: ', 22.0, 'Gen ', 1, ': ', 44.0, 'Gen ', 11, ': ', 44.0] 

所以這實際上只是印刷開始代(如我所料),然後加入第一代的值(44,如預期),但然後跳過剩下的只是打印最後一代(這是由於我的不同錯誤被標記爲第11代),而不是將列表打印到正確的次數並在最後添加額外的值。

我該如何使這項工作能夠在列表中打印正確的代數,而不是在那裏錯過2-10?另外,作爲一個側面的問題,我可以停止使用「Gen」,1,':',[value]之間的逗號和空格來打印列表嗎?

對不起,這樣一個漫長的散文,但我有時無法幫助...提前致謝!

+0

運行這段代碼來了解一些正在發生的事情:對於x在(0,numberGens):打印X –

+0

'在X( 0,numberGens):'會迭代兩次。您可能需要在範圍內尋找'for x(0,numberGens)'。 – jDo

+0

你不能讓Crackers弄清楚這一點嗎? :) –

回答

3

(0, NumberGens)字面上是一個有兩個數字的元組:0和任何NumberGens。想必你實際上想要遍歷從一個到另一個的範圍,在這種情況下,你需要使用range函數。

for x in range(0, numberGens): 

請注意,通常在Python中,您會直接在您的對象上進行迭代;您還沒有表現出全部的代碼,但你也許可以做到:

for gen in addOverGens: 
    juvNew = gen * birthRate 
    ... 
+0

謝謝。哇,我感到非常愚蠢,因爲沒有自己得到。正如我所說 - 我是初學者!隨着'範圍'的增加,我現在可以得到預期的結果。乾杯! – CrackersL01