[Python] Cause de l'erreur et remède: les indices de tranche doivent être des entiers ou Aucun ou avoir une méthode __index__

L'erreur suivante s'est produite en python, donc le mémo de cause et de remède.

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

Détails de l'erreur

Se produit lorsqu'une variable est spécifiée dans une tranche.

python


arr = [1,2,3,4,5,6]
mid = len(arr)/2   #Cause d'erreur

print(arr[0:mid])  #Traitement des occurrences d'erreur

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

Le contenu de l'erreur est que vous ne pouvez spécifier qu'un entier, aucune valeur ou la méthode __index__ dans la tranche.

Méthode __Index__ est un processus qui renvoie int par type.


## Cause de l'erreur et remède

La cause de l'erreur est que len (arr) / 2 n'était pas un entier (entier). La barre oblique de division est un flottant qui inclut le point décimal 0 même si la cible est paire.

python


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

#float

approche

Utilisez deux barres obliques. "/" → "//" Deux barres obliques ne sont que la partie entière de la division (arrondie après la virgule décimale)

Confirmation du type


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

#int

Recalcul


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

print(arr[0:mid])

#[1, 2, 3]

Recommended Posts

[Python] Cause de l'erreur et remède: les indices de tranche doivent être des entiers ou Aucun ou avoir une méthode __index__
[Python] Comment gérer l'erreur d'instance is "is instance () arg 2 doit être un type ou un tuple de types"