[Python] Fehlerursache und Abhilfe: Slice-Indizes müssen Ganzzahlen oder Keine sein oder eine __index__- Methode haben

Der folgende Fehler ist in Python aufgetreten, also die Ursache und Abhilfe Memo.

TypeError: slice indices must be integers or None or have an __index__ method

Fehlerdetails

Tritt auf, wenn eine Variable in einem Slice angegeben wird.

python


arr = [1,2,3,4,5,6]
mid = len(arr)/2   #Fehlerursache

print(arr[0:mid])  #Fehlerauftrittsverarbeitung

#TypeError: slice indices must be integers or None or have an __index__ method

Der Inhalt des Fehlers besteht darin, dass Sie im Slice nur eine Ganzzahl, keinen Wert oder die Methode __index__ angeben können.

__Index__ Methode ist ein Prozess, der int nach Typ zurückgibt.


## Fehlerursache und Abhilfe

Die Fehlerursache ist, dass len (arr) / 2 keine int (Ganzzahl) war. Der Divisions-Schrägstrich ist ein Gleitkomma, das den Dezimalpunkt 0 enthält, auch wenn das Ziel gerade ist.

python


arr = [1,2,3,4]
type(len(arr)/2)

#float

Ansatz

Verwenden Sie zwei Schrägstriche. "/" → "//" Zwei Schrägstriche sind nur der ganzzahlige Teil der Division (nach dem Dezimalpunkt abgerundet).

Typbestätigung


arr = [1,2,3,4]
type(len(arr)//2)

#int

Neuberechnung


arr = [1,2,3,4,5,6]
mid = len(arr)//2

print(arr[0:mid])

#[1, 2, 3]

Recommended Posts

[Python] Fehlerursache und Abhilfe: Slice-Indizes müssen Ganzzahlen oder Keine sein oder eine __index__- Methode haben
[Python] Umgang mit dem is-Instanzfehler "is instance () arg 2 muss ein Typ oder ein Tupel von Typen sein"