Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python NameError:名前「xrange」が定義されていません解決策

Python 3では、xrange関数が削除されました。 Python 3プログラムでxrange関数を使用しようとすると、NameError: name ‘xrange’ is not definedが発生します。 エラー。

このガイドでは、このエラーの意味と、このエラーが発生する理由について説明します。このエラーの例について説明し、コードでエラーを修正する方法を学習できるようにします。

NameError:名前「xrange」が定義されていません

Python 2では、xrange関数を使用して数値の範囲を作成できます。次のコードスニペットについて考えてみます。

print(xrange(0, 3))

コードは[0、1、2]を返します。これは、0から3(3を除く)の範囲のすべての数値です。 xrange() 関数は数値のリストを返します。

Python3はxrange()を削除しました range()と呼ばれる新しい関数を支持する関数。 range() xrange()のような関数 、数値の範囲を生成します。

xrange()には2つの違いがあります およびrange();

  • xrange() およびrange() 異なる名前を持っています。
  • xrange() 関数は数値のリストを生成します。 range() 関数はオブジェクトを生成します。

range() 関数はオブジェクトを生成します。数値のリストを表示する場合は、オブジェクトをリストに変換する必要があります。それ以外の場合、これら2つの方法は同じように機能します。

シナリオ例

カードゲームのリーダーボードのトップにいる最初の数人のプレーヤーを表示するプログラムを作成します。まず、リーダーボードをリストとして宣言しましょう:

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

leaderboard = ["Alex", "Jonas", "Emma", "Kate"]

次に、表示したいスコアの数をユーザーに尋ねます。

to_view = int(input("How many scores would you like to view? "))

ユーザーが挿入した値を整数に変換します。これは、xrange()が原因です。 関数は整数のみをサポートします。

次に、forループを使用してリーダーボードリストを繰り返し処理してみましょう。ユーザーがコンソールに表示するように要求した結果の数のみが表示されます。

for l in xrange(0, to_view):
	print(l + 1, leaderboard[l])

xrange()を使用します 0からユーザーが挿入した数値までの範囲の数値を生成する関数。 forループでは、print()を使用します xrange()の数値と相関するリーダーボードエントリを出力するステートメント ループが表示しているリスト。

「l」の値に1を加えた値を、プレーヤーの名前と一緒に印刷します。これにより、彼らの位置を確認できます。リストはゼロからインデックス付けされるため、「l」に1を追加します。これにより、リストの最初のプレーヤーが「0」の位置に配置されるのを防ぎます。

コードを実行して、何が起こるか見てみましょう。

How many scores would you like to view? 2
Traceback (most recent call last):
  File "main.py", line 5, in <module>
	for l in xrange(0, to_view):
NameError: name 'xrange' is not defined

プログラムがエラーを返します。

ソリューション

xrange()を使用しました 数値の範囲を生成する関数。 Python 2では、これは有効です。 Python 3を使用してプログラムを実行しているため、xrange()を参照できません。 関数。

エラーを解決するには、xrange()を置き換える必要があります range()を使用 方法:

for l in range(0, to_view):
	print(l + 1, leaderboard[l])

このユースケースでは、両方のxrange() およびrange() 同じ結果が返されます。コードを実行して、機能するかどうかを確認しましょう。

How many scores would you like to view? 2
1 Alex
2 Jonas

私たちのプログラムは、リーダーボードの最初の2つの位置に表示されるトーナメントのプレーヤーの名前を正常に表示します。

xrange()メソッドの再定義

この問題の潜在的な解決策は、プログラムの開始時にrange()と等しいxrangeという変数を定義することです。 関数:

xrange = range

これは、このエラーの適切な解決策ではありません。これは、既存のメソッドの名前を変更する問題を回避しているだけだからです。誰かがPython3コードベースを読んで、xrange()を見るのは混乱するでしょう。 xrangeを変数として定義した場合でも、ステートメント。

最善の解決策は、xrange()の名前を変更することです range()へのステートメント コードベースがPython3で機能するように必要な変更を加えます。

結論

xrange()を使用しようとすると、「NameError:name‘xrange’isnotdefined」エラーが発生します。 Python 3で数値の範囲を作成するメソッド。このエラーを解決するには、range()を使用するようにコードを更新します。 Python3に付属するメソッド。

range() xrange()のPython3の代替品です 。これで、プロのようにこのエラーを解決するために必要なノウハウが得られました!


  1. Pythonでdefで定義された関数をプロットする方法は? (Matplotlib)

    Pythonでdefで定義された関数をプロットするには、次の手順を実行できます- 図のサイズを設定し、サブプロット間およびサブプロットの周囲のパディングを調整します。 def、を使用してユーザー定義関数を作成します つまり、 f(x)。 xを作成します numpyを使用したデータポイント。 xをプロットします およびf(x) plot()を使用する メソッド。 図を表示するには、 show()を使用します メソッド。 例 import numpy as np from matplotlib import pyplot as plt plt.rcParams["f

  2. Pythonのissubset()関数

    この記事では、Python標準ライブラリで利用可能なissubset()関数の実装と使用法について学習します。 issubset()メソッドは、セットのすべての要素が別のセットに存在する場合(引数として渡される場合)はブール値のTrueを返し、それ以外の場合はブール値のFalseを返します。 下の図では、BはAのサブセットです。AとBが同一のセットである場合、AはBの適切なサブセットであることを意味します。これは、両方のセットに同じ要素が含まれていることを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値 boolean True/