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.
agregue
xrange=range
su código :) Me funciona.fuente
Resolví el problema agregando esta importación
Más información
fuente
en python 2.x, xrange se usa para devolver un generador, mientras que el rango se usa para devolver una lista. En python 3.x, xrange se ha eliminado y range devuelve un generador al igual que xrange en python 2.x. Por lo tanto, en python 3.x necesita usar range en lugar de xrange.
fuente
Reemplazar
Python 2
xrange
aPython 3
range
Descansa igual.
fuente
Estoy de acuerdo con la última respuesta. Pero hay otra forma de resolver este problema. Puede descargar el paquete llamado future, como pip install future. Y en su archivo .py ingrese esto "from past.builtins import xrange". Este método es por la situación de que hay muchas xranges en su archivo.
fuente
past.builtings.range
hace es simplemente establecerxrange
como referenciarange
. Esto es útil cuando se crea una base de código políglota Python 2/3, pero no es adecuada para un proyecto existente que está diseñado para funcionar solo en Python 2.