关于#list#的问题,如何解决?

问题遇到的现象和发生背景

座位还有一个,但添加不进去

我的代码是

class xs:
def init(self,xh,mz,nl,xb):
self.xh=xh#学号
self.mz=mz
self.nl=nl
self.xb=xb
class banji:
# 班级构造
def init(self, sl):
self.sl=sl#数量
self.sl2=sl#剩余数量
self.xlist=[]

def addxs(self,xs):
    #班级剩余人数大于学生数量,才能成功放入
    if self.sl2 >= len(self.xlist) :
            if xs.nl>12:
                self.xlist.append(xs)
                self.sl2 -= 1
                return True
            else:
                print(xs.mz,"的年龄不符合入班要求", sep="", end="。 \n")
                (len(self.xlist)-1)

    else:
        print("班级只剩", self.sl2, "个座位,不能再加入", xs.mz, sep="", end="。 \n")

def info(self):
    print("-------------班级信息-------------")
    print("班级总人数:", self.sl)
    print("目前班级的剩余人数:", self.sl2)
    print("班级的学生有:", )
    for xs in self.xlist:
        print(xs.mz, "的","学号:", xs.xh,"年龄", xs.nl,"性别", xs.xb)

banji=banji(3)
xs1 = xs(1001,"小明",12,"男")
xs2 = xs(1002,"小刚",13,"男")
xs3 = xs(1003,"小红",14,"女")
xs4=xs(1004,"小宁",15,"女")
banji.addxs(xs1)
banji.addxs(xs2)
banji.addxs(xs3)
banji.info()
banji.addxs(xs4)
banji.info()

运行结果及报错内容

img

我的解答思路和尝试过的方法

尝试过用删除列表元素,但还是添加不进去

我想要达到的结果

满足题目要求就行

为什么要剩余人数大于学生数才能加呢?
应该是这样

if sl2 > 0:
    # 添加学生
    ...
else:
    print(...)

if self.sl2 >= len(self.xlist) 为什么要大于列表长度,不应该是大于0吗

if self.sl2 >= self.sl - len(self.xlist) :

大致如下: 其它相应函数请自行根据需要调整

class Student:
    def __init__(self,sn,name,age,sex):
        self.sn = sn
        self.name = name
        self.age = age
        self.sex = sex

    def __repr__(self):
        return f'{self.sn},{self.name},{self.age},{self.sex}'


class Class:
    def __init__(self):
        self.Students = []

    def print(self):
        for i in self.Students:
            print(i)

    def add(self,student):
        if type(student)==Student:
            if student in self.Students:
                print('此学生,已存在')
            else:
                if student.age>12:
                    if len(self.Students)>2:
                        print('班级已满,加不进学生了')
                    else:
                        self.Students.append(student)
                else:
                    print('此学生年龄太小,不能进班')

以下是测试经过:

>>> a = Student(1,'a',15,1)
>>> b = Student(2,'b',12,1)
>>> c = Student(3,'c',14,0)
>>> d = Student(4,'d',15,0)
>>> C = Class()
>>> C.add(a)
>>> C.add(b)
此学生年龄太小,不能进班
>>> b = Student(2,'b',13,1)
>>> C.add(b)
>>> C.add(b)
此学生,已存在
>>> C.add(c)
>>> C.add(d)
班级已满,加不进学生了
>>> C.print()
1,a,15,1
2,b,13,1
3,c,14,0


↓↓↓如有帮助请点个采纳,谢谢!