Ben doğrusal problama ile farklı boyutlarda hash tabloları oluşturmak için bir program yazıyorum. lineer benim ADT sondalama ben bir işlev def aşağıdaki işlevinden benim ana komut denir) (insert var:Python: "Nonetype 'yinelenebilir değil" yineleme olmadan
def insertHashTable( loadNum, hashTable ):
i = 0
while i < ((loadNum*size)-1):
hashTable.insert(data[i],data[i])
i = i + 1
return hashTable
kendisi insertHashTable dan adlandırılan bu işlevinden olan hata()
def insert(self, key, value):
(found, slot) = self._findSlot(key) #ERROR HERE
if not found :
self._table[slot] = _MapEntry(key, value) #custom datatype
self._count += 1
return not found
Bu kodun ikinci satırında yazım hatası alıyorum.
def _findSlot(self, key):
startLoc = self._hash1(key)
self.slotsAccessed += 1
if self._table.__getitem__(startLoc) == None:
return (False, startLoc)
else:
c = 0
while (c+startLoc) < (self._size -1):
if self._table[startLoc+c] == None:
return (False, startLoc+c)
elif self._table.__getitem__(startLoc).key == key:
return (True, startLoc+c)
c = c + 1
self.slotsAccessed += c
ben anahtarla oluyor hiçbir yineleme var gibi görerek, böyle bir hata insertHashTable() fonksiyonunda olacağını niçin emin değilim: Son olarak, _findSlot() şudur.
Bununla birlikte, hashtable'ımın, tabloyu başlatırken her yuvada 'Yok' olduğunu biliyorum, belki bununla ilgili bir sorun olabilir mi?
(c + başlangıçLoc) <(self._size -1), ilk yinelemede Yanlış olabilir ve bunun için bir iade belgeniz yoktur. Sanırım bu davayı düşünmedin. – FatmaT