老师您好,我在运行这个程序的时候,有时候会报错但有时候又是好的,不知道是个什么情况……
程序:
class Array:
def __init__(self, size=4):
self.__size = size
self.__item = [None] * size
self.__length = 0
def __setitem__(self, key, value):
self.__item[key] = value
self.__length += 1
def __getitem__(self, key):
return self.__item[key]
def __len__(self):
return self.__length
def __iter__(self):
for value in self.__item:
yield value
class Slot:
def __init__(self, key=None, value=None):
self.key = key
self.value = value
def __str__(self):
return 'key:{},value:{}'.format(self.key, self.value)
class HashTable:
def __init__(self):
self.size = 4
self.items = Array(self.size)
def find_index(self, key):
index = self.get_index(key)
if self.items[index] == None:
return index
else:
while self.items[index] is not None:
if self.items[index].key == key:
return index
else:
index = (5*index+1) % self.size
return index
def get_index(self, key):
return hash(key) % self.size
def put(self, key, value):
s = Slot(key, value)
index = self.get_index(key)
self.items[index] = s
def find_key(self, key):
index = self.get_index(key)
if self.items[index] == None:
return None
else:
while self.items[index] is not None:
if key == self.items[index].key:
return index
else:
index = (5*index+1) % self.size
return None
def get(self, key):
index = self.find_key(key)
return self.items[index]
if __name__ == '__main__':
h = HashTable()
h.put('name', '王凯')
h.put('sex', '男')
h.put('age', '18')
print(h.get('name'))
print(h.get('age'))
print(h.get('sex'))
错误情况:

正确情况:
