我一直在尝试让这个 python 脚本使用超声波传感器作为雷达模拟。每次我运行代码时,它会运行 3 秒,然后退出并返回错误:字典在迭代期间更改了大小。
我很困惑,不知道从哪里开始。我已经查看了整个代码,但找不到问题,更不用说:字典。也许只是我缺乏经验,但帮助是值得赞赏的。完整的原始源代码可以在这里找到:https://github.com/AmrMohamed-95/radar-simulation
pi@Pi01:~/radar-simulation/src $ python3 radar.py
pygame 1.9.4.post1
Hello from the pygame community. https://www.pygame.org/contribute.html
dictionary changed size during iteration
Radar Exit
pi@Pi01:~/radar-simulation/src $
它应该显示一个持续刷新的雷达,但在两圈后退出。
最佳答案
它是 Python 2 代码,因此请使用 Python 2 运行它(而不是像您一直在做的那样使用 Python 3),例如
pi@Pi01:~/radar-simulation/src $ python radar.py
<小时/>
编辑
至于您观察到的错误,当您在迭代 dict
元素时发出 del
时,就会发生这种情况,例如:
d = {x, str(x): for x in range(10)}
for k, v in d.items():
if k == 7:
del d[k] # <--- error here!
这可能会导致行为不一致,即使错误没有显示,也被认为是不好的做法。
要修复它,您应该重写代码以避免 del ...
在该代码库中,这似乎发生在 display.py
line 106 中.
关于python - 如何修复迭代期间字典大小更改: pygame radar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58234190/