如何在python类中返回正确的值

2024-04-25 06:14:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,这段代码没有正常运行。你知道吗

这是包含所有函数的ArrayList

class ArrayList:

    def __init__(self):
        self.inArray = [2,3,4,5]
        self.count = 0

    def get(self, i):
        return self.inArray[i]

    def set(self, i, e):
        self.inArray[i] = e

    def length(self):
        return self.count

    def append(self, e):
        self.inArray[self.count] = e
        self.count += 1
        if len(self.inArray) == self.count:
            self._resizeUp()     # resize array if reached capacity

    def insert(self, i, e):
        for j in range(self.count,i,-1):
            self.inArray[j] = self.inArray[j-1]
        self.inArray[i] = e
        self.count += 1
        if len(self.inArray) == self.count:
            self._resizeUp()     # resize array if reached capacity

    def remove(self, i):
        self.count -= 1
        val = self.inArray[i]
        for j in range(i,self.count):
            self.inArray[j] = self.inArray[j+1]
        return val

    def __str__(self):
        return str(self.inArray[:self.count])

    def _resizeUp(self):
        newArray = [0 for i in range(2*len(self.inArray))]
        for j in range(len(self.inArray)):
            newArray[j] = self.inArray[j]
        self.inArray = newArray

    #ex1
    def appendAll(self, A):

        for i in range(len(A)):
            self.inArray.append(A[i])

    #ex2

def removeVal(self, e):
        for i in range (self.count):
            if self.inArray[i] == e:
                return True
        return False

如果我的ArrayList包含e,那么我的代码应该返回true,但是在测试中它不起作用。你知道吗

ls = ArrayList()
print(ls.inArray)
ls.appendAll([42,24])
print(ls.inArray)

你知道吗伊纳瑞小姐返回(2,3,4,5,42,24)。但是,当我运行测试ls.removeVal(4)时,输出返回False。你知道吗

数字4显然是伊纳瑞小姐应该返回true


Tags: 代码inselfforlenreturnifdef
2条回答
def __init__(self):
    self.inArray = [2,3,4,5]
    self.count = 4  # your code: self.count = 0

self.count initial value should be 4,because initial len(self.inArray) is 4.in addition,the function removeal should like this

    def removeVal(self, e):
    print(self.count,self.inArray)
    for i in range(self.count):
        print(self.inArray[i])
        if self.inArray[i] == e:
            return True
    return False

当你打电话的时候

remove(self, i)

i是索引而不是数组中的元素。所以4在数组中这一事实与此无关。你知道吗

相关问题 更多 >