Ответ 1
Вы пытаетесь запустить кодовую базу Python 2 с Python 3. xrange()
был переименован в range()
в Python 3.
Вместо этого запустите игру с Python 2. Не пытайтесь портировать его, если вы не знаете, что делаете, скорее всего, будет больше проблем, чем xrange()
и range()
.
Для записи, что вы видите, это не синтаксическая ошибка, а исключение времени выполнения.
Если вы знаете, что делаете, и активно делаете кодовую базу Python 2 совместимой с Python 3, вы можете связать код, добавив глобальное имя в свой модуль в качестве псевдонима для range
. (Учтите, что вам, возможно, придется обновить любое существующее использование range()
в кодовой базе Python 2 list(range(...))
чтобы гарантировать, что вы по-прежнему получаете объект списка в Python 3):
try:
# Python 2
xrange
except NameError:
# Python 3, xrange is now named range
xrange = range
# Python 2 code that uses xrange(...) unchanged, and any
# range(...) replaced with list(range(...))
или замените все варианты использования xrange(...)
на range(...)
в кодовой базе, а затем используйте другую оболочку, чтобы сделать синтаксис Python 3 совместимым с Python 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Последнее предпочтительнее для кодовых баз, которые хотят быть совместимыми с Python 3 только в долгосрочной перспективе, тогда проще использовать синтаксис Python 3, когда это возможно.