python - 循环正在从循环外获取数据
问题描述
完整代码在这里:https ://repl.it/repls/UnevenLovingDecagons
带有colony_size =(randrange(50,150))的第29行在循环之外
然后在第 42 行循环开始。 Colony_size也在第 45 行。我希望Colony_size只受第 29 行的影响一次。在第二轮循环中,我希望 Colony_size 仅受循环内部发生的事情的影响。我该怎么做?
部分代码如下:
colony_size=(randrange(50,150))
上面的那个还在循环之外 colony_size=(colony_size+immigrants)-die 这个在里面 enter code here enter code here enter code here
解决方案
您正在查看的概念是scope。循环在 python 中没有自己的范围,为什么在这个问题中被问到:Scoping in Python 'for' loops
执行以下代码后:
x = 1
i = 1
for i in (2,3,4,5):
x = i
x 和 i 都将包含 5。如果在任何其他类型的循环中设置或更改它们,情况也是如此。
有几种方法可以控制范围。最常见的是您没有在代码中使用的函数。它们的变量包含在它们自己的范围内,您必须显式地将变量传入和传出它们(使用 return 关键字)。您也可以考虑comprehensions,尽管它们的变量在早期版本的 python 中的包含方式不同。
更具体地说,在您的代码中..您可以考虑将while True
循环中的所有内容放入一个函数中..(以 my_function 为例)
while True:
my_function(colony_size)
或类似的东西。然后它会在下次运行时使用原始的colony_size(因为你没有返回它)
当然,也许这里更简单的选择是只使用不同的变量名。
推荐阅读
- mysql - 如何自动化mysql复制数据库?
- javascript - 从 typescript 调用转义 url 中的特殊字符以到达 mvc 控制器
- aframe - 当我单击 a-frame 中的 VR 按钮时,我无法查看它
- arrays - 如何显示对象数组中的标题?
- azure - DataLake 锁定同一文件的读取和写入
- python - 使用 svgwrite 旋转路径
- python - 如何在 QTreeView 中获取当前选择的值我正在使用 StandardItemModel()
- excel - Powershell 使用 OLAP 查询刷新 Excel。凭证问题
- html - ngSubmit“myFunction 不是函数”打字稿,角度
- reactjs - Reactjs 无法设置样式