web-dev-qa-db-ja.com

スライスインデックスは整数またはNoneであるか、__ index__メソッドが必要です

Pythonで何かしようとしています。リスト(プラトー)をいくつかのリスト(L [i])にスライスしたいのですが、次のエラーメッセージが表示されます。

  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

関係する行は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

debutfinの値は、tailleがfloatであるため、整数ではなく浮動小数点値です。

代わりに、これらの値を整数にします。

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

または、tailleを整数にします。

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