web-dev-qa-db-fra.com

Les index de tranche doivent être des entiers ou des valeurs nulles ou avoir la méthode __index__

J'essaie quelque chose avec Python. Je souhaite découper une liste (plateau) dans plusieurs listes (L [i]), mais le message d'erreur suivant s'affiche:

  File "C:\Users\adescamp\Skycraper\skycraper.py", line 20, in <module>
    item = plateau[debut:fin]
TypeError: slice indices must be integers or None or have an __index__ method

La ligne concernée est celle avec item = plateau[debut:fin]

from math import sqrt

plateau = [2, 3, 1, 4, 1, 4, 2, 3, 4, 1, 3, 2, 3, 2, 4, 1]

taille = sqrt(len(plateau))

# Division en lignes
L = []
i = 1
while i < taille:
    fin = i * taille
    debut = fin - taille
    item = plateau[debut:fin]
    L.append(item)
    i += 1
48
DescampsAu

Vos valeurs debut et fin sont des valeurs à virgule flottante et non des entiers, car taille est un nombre à virgule flottante.

Rendez ces valeurs entières à la place:

item = plateau[int(debut):int(fin)]

Sinon, faites taille un entier:

taille = int(sqrt(len(plateau)))
72
Martijn Pieters