【发布时间】:2016-10-13 23:00:25
【问题描述】:
请原谅任何错误,因为这是我的第一篇文章。
我是一名计算机专业的学生,我已经错过了几周的教学时间,所以我没有为我的任务做好充分的准备。我正在制作一个人口模型,该模型需要能够多次进行多次计算,然后将每次计算的结果添加到相应的列表中。
在每次添加到列表时,我真的很难让代码一遍又一遍地运行(这是否称为迭代?)。
据我所知,这是一段有问题的代码,我正在竭尽全力让它工作!
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 运行代码时,我希望看到以下结果: 列表 juvOverGens 的 10 次打印,每次最后添加一个额外值,应该是将 aduOverGens 的最后一个值加倍(在这种情况下,每次都相同,因为尚未向 aduOverGens 添加额外的值)。
但实际上,打印的结果是:
['Gen 0: ', 22.0, 'Gen ', 1, ': ', 44.0]
['Gen 0: ', 22.0, 'Gen ', 1, ': ', 44.0, 'Gen ', 11, ': ', 44.0]
所以这实际上只是打印了起始代(如我所料),然后添加了第一代的值(44,如预期),但随后跳过了其余部分,最终只打印了最后一代(这是由于不同的我的错误被标记为 Gen 11),而不是打印列表的正确次数,并在末尾添加了额外的值。
我怎样才能使这项工作能够在列表中打印正确的代数,而不是在列表中遗漏 2-10 个?另外作为一个附带问题,我可以阻止列表打印出带有 '' 和逗号以及 'Gen ', 1, ': ', [value] 之间的间隙吗?
很抱歉写了这么长的散文,但有时我忍不住……提前谢谢!
【问题讨论】:
-
运行此代码以了解正在发生的一些事情:for x in (0, numberGens): print x
-
for x in (0, numberGens):将迭代两次。您可能正在寻找for x in range(0, numberGens)。 -
你不能让饼干弄明白吗? :)
-
谢谢,是的,这就是最终的解决方案;)正如我所说,我是这一切的初学者。我不敢相信我没有发现我需要“范围”...
-
@KennyOstrom 你是对的,我应该意识到你试图通过建议调试而不是放弃解决方案来进行教学。这似乎是徒劳的;无论如何,总是有人立即回答(有人做到了)。事实上,鉴于愚蠢的声誉积分系统,我只能得出结论,间接地不鼓励教学/助推。也许,有一天我们会得到一个“会话中的课堂”按钮,你可以点击它让我们其他人知道我们不应该马上回答。无论如何,下次我看到你建议在某处添加打印语句时我会闭嘴:)
标签: python list loops iteration python-3.5