老师您好,我在运行这个程序的时候,有时候会报错但有时候又是好的,不知道是个什么情况……
程序:
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'))错误情况:

正确情况:
