循环正在从循环外部获取数据

2024-05-28 19:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

完整代码如下:https://repl.it/repls/UnevenLovingDecagons

带有菌落大小=(randrange(50150))的第29行在循环外

然后在第42行循环开始。 菌落大小也在第45行。 我希望第29行只对群体大小影响一次。对于第二次循环,我希望群体大小只受循环内部发生的事情的影响。我怎么能这么做?你知道吗

部件代码如下:

colony_size=(randrange(50,150))

上面的那个还在循环之外 殖民地大小=(殖民地大小+移民)-死亡 这个在里面 在此处输入代码 在此处输入代码 在此处输入代码


Tags: 代码httpssize部件itrepl事情群体
2条回答

您应该有另一个变量来定义第29行的默认值colony_size,例如:

default_colony_size = (randrange(50,150))

然后将colony_size定义为一个空int,或者在循环之前只定义0。你知道吗

在循环开始时,您希望执行以下操作:

if colony_size == 0 colony_size = default_colony_size

请原谅语法错误,因为我对Python不是很熟悉

你看到的概念是scope。循环在python中没有自己的作用域,为什么在这个问题中要问:Scoping in Python 'for' loops

执行以下代码后:

x = 1
i = 1
for i in (2,3,4,5):
    x = i

x和i都包含5。如果在任何其他类型的循环中设置或更改它们,情况也是如此。你知道吗

有几种方法可以控制范围。。最常见的是functions,您在代码中没有使用它。它们的变量包含在自己的作用域中,您必须显式地向它们传递变量(使用return关键字)。您还可以考虑comprehensions,尽管它们的变量在早期版本的python中没有以相同的方式包含。你知道吗

更具体地说,在你的代码中。。您可以考虑将while True循环中的所有内容放入函数中。。(以我的函数为例)

while True:
     my_function(colony_size)

或者类似的。然后它将在下次运行时使用原始的colony\u大小(因为您没有返回它)

当然,这里可能更简单的选择是使用不同的变量名。你知道吗

相关问题 更多 >

    热门问题