【问题标题】:Python - Running code over (iterating?) only works oncePython - 运行代码(迭代?)只工作一次
【发布时间】: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


【解决方案1】:

(0, NumberGens) 实际上是一个包含两个数字的元组:0 和 NumberGens 是什么。大概您实际上想要迭代从一个到另一个的范围,在这种情况下您需要使用 range 函数。

for x in range(0, numberGens):

请注意,通常在 Python 中,您会直接迭代对象;你还没有显示所有的代码,但你可以这样做:

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

【讨论】:

  • 谢谢。哇,我为自己没有得到那个而感到非常愚蠢。正如我所说 - 我是初学者!随着“范围”的加入,我现在得到了预期的结果。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多