TypeError: tranche indices doivent être des entiers ou Aucun, ou avoir un __index__ méthode
Lors de l'exécution du code dans le vide donne l'erreur suivante:
Traceback (most recent call last): File "C:/Python34/inversion3.py",
line 44, in <module>
nInversions.inversionMergeSort(m) File "C:/Python34/inversion3.py", line 16, in inversionMergeSort
left = m[0:half] TypeError: slice indices must be integers or None or have an __index__ method
CODE:-
from collections import deque
m = []
f = open("IntegerArray.txt")
for line in f:
m.append(int(line))
class InversionCount:
def __init__(self, n):
self.n = n
def inversionMergeSort(self, m):
if len(m) <= 1:
return m
half = len(m)/2
left = m[0:half]
right = m[half:]
left = self.inversionMergeSort(left)
right = self.inversionMergeSort(right)
return self.inversionSort(left, right)
def inversionSort(self, left, right):
leftQueue = deque(i for i in left)
rightQueue = deque(j for j in right)
orderedList = []
while len(leftQueue) > 0 or len(rightQueue) > 0:
if len(leftQueue) > 0 and len(rightQueue) > 0:
if leftQueue[0] <= rightQueue[0]:
orderedList.append(leftQueue[0])
leftQueue.popleft()
else:
orderedList.append(rightQueue[0])
self.n += len(leftQueue)
rightQueue.popleft()
elif len(leftQueue) > 0:
orderedList.append(leftQueue[0])
leftQueue.popleft()
elif len(rightQueue) > 0:
orderedList.append(rightQueue[0])
rightQueue.popleft()
return orderedList
nInversions = InversionCount(0)
nInversions.inversionMergeSort(m)
print (nInversions.n)
- double possible de Tranche indices doivent être des entiers ou Aucun ou ont __index__ méthode
Vous devez vous connecter pour publier un commentaire.
En 3.x, int/int donne un flotteur. ce qui n'est pas un int.
de sorte que votre ligne 15
fait la moitié d'un flotteur. Ce que vous avez besoin est une double barre oblique
de faire la moitié d'un int, nécessaires pour son utilisation dans la tranche à la ligne 16.
Dans votre cas,
len(m)/2
renvoie unefloat
et la ligne 16 est en attente d'uneint
.Vous devriez le type de fonte de la moitié de
int
comme suit: