写一个顺序表操作学生信息类

运行模块

from day1_1_1 import Student
from day1_1 import Seqlist

d = Seqlist(7)

Student1 = Student('小红', 18, '女', '1班', 88)
Student2 = Student('小花', 17, '女', '2班', 98)
Student3 = Student('小明', 18, '男', '2班', 78)
Student4 = Student('小刚', 17, '男', '1班', 100)
Student5 = Student('小周', 19, '男', '3班', 98)
d.add(Student1, Student2, Student3)
print(type(d.data[1]))
print(d.look())
print(d.data[0].name,d.data[1].name, d.data[2].name)
print('增加')
d.add_up(Student4, 1)
print(d.data[0].name,d.data[1].name, d.data[2].name)
print(d.look())
print('删除')
d.remove_up(1)
print(d.look())
print('改')
d.reverse(Student5,0)
d.find_up(Student2,Student4)
print(d.look())
print('查')
print(d.find(Student5))
class Student:
    def __init__(self, name, age, sex, cl, gr):
        self.name = name
        self.age = age
        self.sex = sex
        self.cl = cl
        self.gr = gr
        self.print = f'姓名:{self.name};年龄:{self.age};性别:{self.sex};班级:{self.cl};分数:{self.gr}'

class Seqlist:
    def __init__(self, capacity=10):
        self.capacity = capacity  #最大容量
        self.size = 0  #现长度
        self.data = [None] * capacity

    #判满
    def is_full(self):
        return self.size == self.capacity

    #判空
    def is_empty(self):
        return self.size == 0

    #插入到指定位置
    def add_up(self, item, arge):
        if arge > self.size or arge < 0:
            print('插入位置不正确')
        elif not self.is_full():
            self.size = self.size + 1
            for i in range(arge, self.size):
                self.data[self.size + arge - i] = self.data[self.size + arge - i - 1]
            self.data[arge] = item
        else:
            print('达到最大值,无法插入')

    #添加元素
    def add(self, *item):
        if not self.is_full():
            for i in item:
                self.data[self.size] = i
                self.size += 1
            return True
        else:
            return False

    #查找元素
    def find(self, item):
        if not self.is_empty():
            for i in range(self.size):
                if self.data[i] == item:
                    return i
        return None

    #删除元素
    def remove(self):
        if self.is_empty():
            return False
        else:
            self.data[self.size - 1] = None
            self.size -= 1
            return True

    def remove_up(self, arge):
        if not self.is_empty() and 0 <= arge < self.size:
            for i in range(arge, self.size - 1):
                self.data[arge] = self.data[arge + 1]
                arge = arge + 1
            self.data[self.size - 1] = None
            self.size -= 1
        elif self.is_empty():
            print('为空')
        else:
            print('删除量不存在')

    #遍历
    def show(self):
        if self.is_empty():
            print("遍历失败")
            return False
        for i in range(self.size):
            print(self.data[i], end=' ')
        print()

    def reverse(self, item, arge):
        if self.is_empty():
            print('是空')
        elif arge > self.size or arge < 0:
            print('下标不存在')
        else:
            self.data[arge] = item

    def find(self, item):
        if not self.is_empty():
            for i in range(self.size):
                if self.data[i] == item:
                    return f'存在,在序列位置{i}处'
        else:
            return None

    def find_up(self, item, new_item):
        if item in self.data:
            for i in range(self.size):
                if self.data[i] == item:
                    self.data[i] = new_item
        elif self.is_empty():
            print('为空')
        else:
            print(f'无{item}值')

    def qc(self):
        if self.is_empty():
            return False
        else:
            for i in range(self.size):
                for j in range(i + 1, self.size):
                    if self.data[i] == self.data[j]:
                        for n in range(j, self.size - 1):
                            self.data[n] = self.data[n + 1]
                        self.size -= 1

    def look(self):
        s = ''
        for i in self.data:
            if i is not None:
                s = s + i.print + '\n'
        return s[:len(s) - 1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值