我有一些嵌套功能,我正在尝试总结发生某些事情的总数:
if C[city_cell_x][city_cell_y] == 1:
cityCount +=1
,但由于这在一个函数之内:
# Animate
fig = plt.figure()
plt.axis("on")
ims = []
for t in range(totalTime):
print(str(r), " Time = " + str(t))
ims.append((plt.imshow(C, cmap="Accent"),))
C = mapRun(C)
if C[city_cell_x][city_cell_y] == 1:
cityCount +=1
im_ani = animation.ArtistAnimation(
fig, ims, interval=interval, repeat_delay=3000, blit=True
)
# Save the animation?
if save:
print("Saving...")
im_ani.save(("Repeat" + str(r) + ".html"), writer="html", fps=60, dpi=75)
我然后循环循环,它要么不是成功计数,而且仅在末尾返回零,即使在代码开始时引用了"在分配前引用的CityCount",即使它在函数的开头(函数之外))
我可以提供整个代码,如果更容易
看来问题可能是这里所描述的。
如果您在功能之外创建了cityCount
,并且现在试图在内部分配它,那么您将获得的是一个新的本地变量。
如果if
语句永远不正确,则cityCount
永远不会增加,但代码运行正常。如果if
语句为真,则会获得错误,因为没有本地cityCount
添加到。
解决方案是将global cityCount
添加到函数的开头。