49

出力の53行目を印刷するようにプログラムに指示しています。このエラーは、行数が少ないために印刷できないことを示していますか?

4

8 に答える 8

78

53項目のリストがある場合、最後の1つはthelist[52]、索引付けが0から始まるためです。


実際のPythonから:Pythonトレースバックを理解する-IndexError

IndexError

は、aやaIndexErrorなどのシーケンスからインデックスを取得しようとしたときに発生し、そのインデックスがシーケンスに見つかりません。Pythonのドキュメントでは、この例外がいつ発生するかを定義しています。listtuple

シーケンスの添え字が範囲外の場合に発生します。(出典

IndexErrorこれが:を発生させる例です。

test = list(range(53))
test[53]

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-7879607f7f36> in <module>
      1 test = list(range(53))
----> 2 test[53]

IndexError: list index out of range

のエラーメッセージ行は、IndexError優れた情報を提供しません。シーケンス参照があり、この場合out of rangeはシーケンスのタイプが何であるかがわかります。listその情報を残りのトレースバックと組み合わせると、通常、問題の修正方法をすばやく特定するのに十分です。

于 2009-07-08T15:07:15.337 に答える
35

はい、

存在しないリストの要素にアクセスしようとしています。

MyList = ["item1", "item2"]
print MyList[0] # Will work
print MyList[1] # Will Work
print MyList[2] # Will crash.

オフバイワンエラーが発生しましたか?

于 2009-07-08T15:08:32.620 に答える
5

はい。シーケンスには 54 番目の項目がありません。

于 2009-07-08T15:07:00.940 に答える
3

それは正しい。「リストインデックスが範囲外です」n-thは、リストの長さが。よりも小さいときに、リストの要素を参照していることを意味している可能性がありnます。

于 2009-07-08T15:08:10.423 に答える