Está intentando ejecutar una base de código Python 2 con Python 3. cuyo xrange()
nombre se cambió range()
en Python 3.
Ejecuta el juego con Python 2 en su lugar. No intente portarlo a menos que sepa lo que está haciendo, lo más probable es que haya más problemas más allá de xrange()
vs.range()
.
Para el registro, lo que está viendo no es un error de sintaxis, sino una excepción de tiempo de ejecución.
Si sabe lo que está haciendo y está haciendo activamente una base de código de Python 2 compatible con Python 3, puede conectar el código agregando el nombre global a su módulo como un alias para range
. (Tenga en cuenta que es posible que deba actualizar cualquier range()
uso existente en la base de código de Python 2 list(range(...))
para asegurarse de que todavía obtiene un objeto de lista en 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(...))
o reemplace todos los usos de xrange(...)
con range(...)
en la base de código y luego use un calce diferente para hacer que la sintaxis de Python 3 sea compatible con Python 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Este último es preferible para bases de código que quieren aspirar a ser Python 3 compatible únicamente en el largo plazo, es más fácil usar a continuación la sintaxis de Python 3 siempre que sea posible.