Vous essayez d'exécuter une base de code Python 2 avec Python 3. a xrange()
été renommé range()
en Python 3.
Exécutez plutôt le jeu avec Python 2. Ne pas essayer de le porter à moins que vous savez ce que vous faites, le plus probable , il y aura plus de problèmes au - delà xrange()
contre range()
.
Pour mémoire, ce que vous voyez n'est pas une erreur de syntaxe mais une exception d'exécution à la place.
Si vous savez ce que vous faites et que vous créez activement une base de code Python 2 compatible avec Python 3, vous pouvez relier le code en ajoutant le nom global à votre module comme alias pour range
. (Tenez compte du fait que vous devrez peut- être mettre à jour toute range()
utilisation existante dans la base de code Python 2 list(range(...))
pour vous assurer d'obtenir toujours un objet de liste dans 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(...))
ou remplacez toutes les utilisations de xrange(...)
with range(...)
dans la base de code, puis utilisez un shim différent pour rendre la syntaxe Python 3 compatible avec Python 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Ce dernier est préférable pour les bases de code qui souhaitent viser à être compatibles Python 3 uniquement à long terme, il est plus facile d'utiliser simplement la syntaxe Python 3 chaque fois que possible.
Martijn Pieters
la source
ajoutez
xrange=range
votre code :) Cela fonctionne pour moi.la source
J'ai résolu le problème en ajoutant cette importation
Plus d' informations
la source
en python 2.x, xrange est utilisé pour renvoyer un générateur tandis que range est utilisé pour renvoyer une liste. En python 3.x, xrange a été supprimé et range retourne un générateur comme xrange en python 2.x. Par conséquent, dans python 3.x, vous devez utiliser range plutôt que xrange.
la source
Remplacer
Python 2
xrange
àPython 3
range
Reste tout de même.
la source
Je suis d'accord avec la dernière réponse.Mais il existe un autre moyen de résoudre ce problème.Vous pouvez télécharger le package nommé future, tel que pip install future.Et dans votre fichier .py, saisissez ceci "from past.builtins import xrange" .Cette méthode est pour la situation où il existe de nombreuses gammes x dans votre fichier.
la source
past.builtings.range
qui est simplement définixrange
comme une référence àrange
. Cela est utile lors de la création d'une base de code polyglotte Python 2/3, mais ne convient pas à un projet existant conçu pour fonctionner uniquement sur Python 2.