2016-06-13 142 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