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

Python TypeError:リストインデックスはfloatではなく整数またはスライスである必要があります解決策

リストには、インデックス番号を使用してインデックスが付けられます。これらの数値は整数値です。浮動小数点数を使用してリストからアイテムにアクセスしようとすると、「TypeError:リストインデックスは浮動小数点ではなく整数またはスライスである必要があります」というエラーが発生します。

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

TypeError:リストインデックスはfloatではなく整数またはスライスである必要があります

アイテムがリストに追加されると、そのアイテムにはインデックス値が割り当てられます。インデックス値はゼロから始まり、リスト内の新しいアイテムごとに1ずつ増加します。これにより、個々のアイテムに簡単にアクセスできます。リストの最初の項目のインデックスは0、2番目の項目のインデックスは1というように続きます。

浮動小数点数を使用してリストからアイテムを取得することはできません。浮動小数点数は別のデータ型です。その結果、Pythonではそれらの扱いが異なります。リストは整数を使用してインデックス付けされるため、リストには整数のインデックス番号が必要です。

シナリオ例

テニストーナメントの参加者に関する情報を取得するプログラムを作成します。まず、リストのリストを定義します。このリストのリストには、トーナメントのすべての参加者に関する情報が含まれます。

participants = [
	    ["Alex Rogers", 5, 2],
	    ["Linda Patterson", 3, 4],
	    ["Ruby Spencer", 1, 6]
]

参加者のリストには3つのリストが含まれています。これらのそれぞれには、参加者の名前、参加者が勝ったゲームの数、および参加者が負けたゲームの数がこの順序でリストされています。

値は、プレイヤーが勝った回数の順に並べられています。

次に、ユーザーに情報を表示したいプレーヤーを尋ねます。 input()ステートメントを使用してこれを行います。

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

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

player_to_find = float(input("Enter the leaderboard position of the player you want to find: "))

ユーザーが挿入する番号は、リーダーボード上のプレーヤーの位置に対応している必要があります。アレックスロジャースが最初です。彼について知るために、ユーザーは1を挿入します。

コードの後半でインデックスを使用するため、ユーザーが挿入した値をfloatに変換します。インデックス値は数値であるため、使用するには数値が必要です。

次に、インデックスを使用して、ユーザーが探しているプレーヤーを取得します。

player_info = participants[player_to_find - 1]

ユーザーが挿入した値を使用して、「参加者」リストから個々のプレーヤーのレコードを検索します。リストはゼロからインデックス付けされ、リーダーボードの最初の人が位置#1になるため、「player_to_find」の値に1を引きます。

次に、この参加者に関する詳細をコンソールに出力します。

print("Name: {}".format(player_info[0]))
print("Wins: {}".format(player_info[1]))
print("Losses: {}".format(player_info[2]))

プレーヤーの名前、勝ったゲームの数、コンソールに負けたゲームの数が表示されます。プログラムを実行してみましょう。

Enter the leaderboard position of the player you want to find: 2
Traceback (most recent call last):
 File "main.py", line 9, in <module>
	    player_info = participants[player_to_find + 1]
TypeError: list indices must be integers or slices, not float

プログラムにリーダーボードの位置を挿入すると、エラーが発生します。

ソリューション

ユーザーがプログラムに挿入した値をfloatに変換します。これは、float()を使用して行います。 方法。

「参加者」リストからアイテムを取得するときは、浮動小数点数を使用して取得しようとするため、これは間違いです。これによりエラーが発生します。

プログラムを修正するには、ユーザーが挿入した値を浮動小数点数ではなく整数に変換する必要があります。 int()を使用してこれを行うことができます 方法:

player_to_find = int(input("Enter the leaderboard position of the player you want to find: "))

整数値が得られたので、インデックスを使用してリストからアイテムを取得できます。コードを実行して、何が起こるかを確認します。

Enter the number of the player you want to find: 2
Name: Linda Patterson
Wins: 3
Losses: 4

私たちのコードは、リーダーボードの2番目の位置にいる個人のプレーヤーレコードを正常に示しています。

結論

「TypeError:リストインデックスは浮動小数点ではなく整数またはスライスである必要があります」エラーは、浮動小数点数を使用してリストからアイテムにアクセスしようとすると発生します。このエラーを解決するには、整数のみを使用して、インデックス値でリスト内のアイテムにアクセスするようにしてください。

これで、プロのようにコードでこのエラーを修正する準備が整いました!


  1. 整数のリストから重複を印刷するPythonプログラム?

    ここでは、番号のリストからすべての重複する番号を印刷しようとしています。そのため、リスト内で複数回出現するすべての番号を出力しようとしています(リスト内で一意ではありません)。 例 Input: given_list = [ 3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] Output: desired_output = [3, 9, 12] Input: given_list = [-27, 4, 29, -27, -2 , -99, 123, 499, -99] Output: desired_output = [-27, -99] 以下は、特定のリストから

  2. リストが空かどうかをチェックするPythonプログラム?

    空のリストが与えられました。私たちの仕事は、このリストが空かどうかを確認することです。ここでチェックするのは暗黙のチェック方法です。 アルゴリズム Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. サンプルコード # Python code to check for empty list def checklist(A): if not A: return 1 else: return 0 # Driver