私はpythonプログラムを実行しているときにエラーが出ています。
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in <module>
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\class\inventory.py", line 17, in __init__
builtins.NameError: global name 'xrange' is not defined
ゲームは ここから です。
このエラーの原因は何ですか?
Python 3でPython 2コードベースを実行しようとしています。Python3では、 xrange()
が range()
に変更されました。
代わりにPython 2でゲームを始めてください。自分が何をしているのか分からない限り、移植しようとしないでください。おそらく、xrange()
とrange()
以外にももっと問題があるでしょう。
レコードに関して、見ているのは構文エラーではなく実行時例外です。
自分のしていることがわかっていて、Python 2コードベースをPython 3と互換性のある形で積極的に作成している場合は、グローバル名をrange
のエイリアスとして自分のモジュールに追加してコードをブリッジできます。 (Python 3でまだリストオブジェクトが得られるようにするには、 may をPython 2コードベースで使用している既存のrange()
をlist(range(...))
で更新する必要があることを考慮してください)。
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互換の only を目指したいコードベースには後者が望ましいです。可能であればPython 3構文を使うほうが簡単です。
あなたのコードにxrange=range
を追加してください。
python 2.xでは、xrangeはジェネレーターを返すために使用され、whilerangeはリストを返すために使用されます。 python 3.xでは、xrangeが削除され、rangepython 2.xのxrangeのようなジェネレーターを返します。したがって、python 3.xでは、xrangeではなくrangeを使用する必要があります。
このインポートを追加して問題を解決しました
詳細 情報
from past.builtins import xrange
この問題を解決する別の方法があります。pipinstall futureなど、futureという名前のパッケージをダウンロードできます。そして、.pyファイルに "from.ast.builtins import xrange"と入力してください。あなたのファイルにたくさんのxrangeがある状況のためです。
交換する
Python 2からxrange
へ
Python 3 range
すべて同じように休む。