Как исправить словарь, изменивший размер во время итерации: Pygame Radar - PullRequest
1 голос
/ 04 октября 2019

Я пытался заставить этот скрипт на питоне использовать ультразвуковой датчик в качестве радиолокационной симуляции. Каждый раз, когда я запускаю код, он работает в течение 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 $ 

На нем должен отображаться радар, который постоянно обновляется, но выходит из строя после двух оборотов.

1 Ответ

1 голос
/ 04 октября 2019

Это код Python 2, поэтому запустите его с Python 2 (а не с Python 3, как вы это делали), например,

pi@Pi01:~/radar-simulation/src $ python radar.py

РЕДАКТИРОВАТЬ

Что касаетсяошибка, которую вы наблюдаете, она возникает, когда вы выполняете del элемента dict во время итерации, например:

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 строке 106.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...