Anda mencoba menjalankan basis kode Python 2 dengan Python 3. xrange()
diubah namanya menjadi range()
Python 3.
Jalankan game dengan Python 2 sebagai gantinya. Jangan mencoba untuk port kecuali Anda tahu apa yang Anda lakukan, kemungkinan besar akan ada lebih banyak masalah di luar xrange()
vs range()
.
Sebagai catatan, apa yang Anda lihat bukan kesalahan sintaks tetapi pengecualian runtime.
Jika Anda tahu apa yang Anda lakukan dan secara aktif membuat basis kode Python 2 yang kompatibel dengan Python 3, Anda dapat menjembatani kode tersebut dengan menambahkan nama global ke modul Anda sebagai alias untuk range
. (Mempertimbangkan bahwa Anda mungkin harus memperbarui setiap range()
penggunaan yang ada dalam basis kode Python 2 dengan list(range(...))
untuk memastikan Anda masih mendapatkan objek daftar di 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(...))
atau ganti semua penggunaan xrange(...)
dengan range(...)
dalam basis kode dan kemudian gunakan shim yang berbeda untuk membuat sintaks Python 3 kompatibel dengan Python 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Yang terakhir lebih disukai untuk basis kode yang ingin bertujuan menjadi Python 3 yang kompatibel hanya dalam jangka panjang, lebih mudah untuk kemudian hanya menggunakan sintaks Python 3 bila memungkinkan.
tambahkan
xrange=range
kode Anda :) Ini berfungsi untuk saya.sumber
Saya memecahkan masalah dengan menambahkan impor ini Info
lainnya
sumber
di python 2.x, xrange digunakan untuk mengembalikan generator sedangkan range digunakan untuk mengembalikan daftar. Di python 3.x, xrange telah dihapus dan range mengembalikan generator seperti xrange di python 2.x. Oleh karena itu, dalam python 3.x Anda perlu menggunakan rentang daripada xrange.
sumber
Menggantikan
Python 2
xrange
hinggaPython 3
range
Istirahat semua sama.
sumber
Saya setuju dengan jawaban terakhir. Tapi ada cara lain untuk menyelesaikan masalah ini. Anda dapat mengunduh paket bernama future, seperti pip install future. Dan dalam file .py Anda masukkan ini "from past.builtins import xrange". Metode ini untuk situasi yang ada banyak xranges di file Anda.
sumber
past.builtings.range
dilakukan hanya diaturxrange
sebagai referensirange
. Ini membantu ketika membuat Python 2/3 polyglot codebase, tetapi tidak cocok untuk proyek yang sudah ada yang dirancang untuk bekerja pada Python 2 saja.