【顺序表】我这个为什么会输出一行None啊?

7-1 顺序表(删除)

已知一组数据,采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素

输入格式:
输入包含三行数据,第一行是表中元素个数,第二行是顺序表的各个元素,第三行是区间x和y。

输出格式:
删除元素值在[x,y]之间的所有元素后,输出新的顺序表。(最后无空格)

class SqList:
    def __init__(self,n):                            #构造函数
        self.initcapacity=10;                       #初始容量设置为10
        self.capacity=self.initcapacity            #容量设置为初始容量
        self.data=[None]*self.capacity            #设置顺序表的空间
        self.size=0                                #长度设置为0


    def resize(self, newcapacity):                #改变顺序表的容量为newcapacity
        assert newcapacity>=0                    #检测参数正确性的断言
        olddata=self.data
        self.data=[None]*newcapacity
        self.capacity=newcapacity
        for i in range(self.size):
            self.data[i]=olddata[i]

    def CreateList(self, a):                    #由数组a中元素整体建立顺序表
        for i in range(0,len(a)):
            if self.size==self.capacity:        #出现上溢出时
                self.resize(2*self.size);        #扩大容量
            self.data[self.size]=a[i]
            self.size+=1                        #添加后元素个数增加1

    def Add(self, e):                             #在线性表的末尾添加一个元素e
        if self.size==self.capacity:            #顺序表空间满时倍增容量
            self.resize(2*self.size)
        self.data[self.size]=e                    #添加元素e
        self.size+=1                            #长度增1

    def getsize(self):                          #返回长度
        return self.size
   
    def __getitem__(self,i):                    #求序号为i的元素
        assert 0<=i<self.size                   #检测参数i正确性的断言            
        return self.data[i]

    def __setitem__(self, i, x):                #设置序号为i的元素
        assert 0<=i<self.size                   #检测参数i正确性的断言
        self.data[i]=x

    def GetNo(self, e):                            #查找第一个为e的元素的序号
        i=0;
        while i<self.size and self.data[i]!=e:
            i+=1                                #查找元素e
        if (i>=self.size):                        #未找到时返回-1
            return -1;
        else:
            return i;                            #找到后返回其序号

    def Insert(self, i, e):                     #在线性表中序号i位置插入元素e
        assert 0<=i<=self.size                  #检测参数i正确性的断言
        if self.size==self.capacity:            #满时倍增容量
            self.resize(2*self.size)
        for j in range(self.size,i,-1):            #将data[i]及后面元素后移一个位置
            self.data[j]=self.data[j-1]
        self.data[i]=e                            #插入元素e
        self.size+=1                            #长度增1

    def Delete(self, i):                         #在线性表中删除序号i的元素
        assert 0<=i<=self.size-1                #检测参数i正确性的断言
        for j in range(i,self.size-1):
            self.data[j]=self.data[j+1]         #将data[i]之后的元素前移一个位置
        self.size-=1                            #长度减1
        if self.capacity>self.initcapacity and self.size<=self.capacity/4:
            self.resize(self.capacity//2)       #满足要求容量减半
            
    def display(self):                            #输出顺序表
        for i in range(0,self.size):
            print(self.data[i],end=' ')
        print()

a = int(input())
L = SqList(a)
lst = list(map(int,input().split()))
x,y = map(int,input().split())
L.CreateList(lst)
i = 0
while True and i <= L.getsize()-1:
    if x <= L[i] <= y:
        L.Delete(i)
    else:
        i += 1
print(L.display())

我这个为什么会输出一行None啊

  • 您的 display() 方法没有 return 语句,Python 函数默认返回 None 。所以您 print(L.display()) 就会是 None 。

  • 炼您的代码截屏图片

    img

  您display() 方法已经打印了结果,直接调用就好,不用print() 。


L.display()

  • 代码运行效果截屏图片

    img


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7576645
  • 以下回答来自chatgpt:

    抱歉,作为人工智能模型,我并没有使用任何编程语言。我可以处理各种编程语言的代码,但无法提供自己的代码片段或完整代码。

    请您提供更具体的问题和需求,我将尽力回答和帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^