我是小白,程序报错,请前辈们看一下,谢谢!

代码:

class StudentModel:
    def __init__(self, n01=0, name="", age=0, score=0):
        self.n01 = n01
        self.name = name
        self.age = age
        self.score = score


class StudentManagerController:
    __init_n01 = 1000

    def __init__(self):
        self.__stu_list = []

    @property
    def stu_list(self):
        return self.__stu_list

    def add_student(self, stu_info):
        stu_info.n01 = self.__generate_n01()

        self.__stu_list.append(stu_info)

    def __generate_n01(self):
        StudentManagerController.__init_n01 += 1
        return StudentManagerController.__init_n01

    def remove_student(self, n01):
        for item in self.__stu_list:
            if item.n01 == n01:
                self.__stu_list.remove(item)
                return True
        return False

    def update_student(self, str_info):
        for item in self.__stu_list:
            if item.n01 == str_info.n01:
                item.name = stu_info.name
                item.age = stu_info.age
                item.score = stu_info.score
                return True
        return False


class StudentManagerView:
    def __init__(self):
        self.__manager = StudentManagerController()

    def __display_menu(self):
        print("1)添加学生")
        print("2)显示学生")
        print("3)删除学生")
        print("4)修改学生")
        print("5)按照成绩升序显示学生")

    def __select_menu(self):
        item = input("请输入:")
        if item == "1":
            self.__input_student()
        elif item == "2":
            self.__output_student(self.__manager.stu_list)
        elif item == "3":
            pass
        elif item == "4":
            pass
        elif item == "5":
            pass

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

    def __input_student(self):
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        score = int(input("请输入成绩:"))
        stu = StudentModel(n01, name, age, score)
        self.__manager.add_student(stu)

    def __output_student(self, list_output):
        for item in list_output:
            print(item.id, item.name, item.age, item.score)


view = StudentManagerView()
view.main()

报错代码:

1)添加学生
2)显示学生
3)删除学生
4)修改学生
5)按照成绩升序显示学生
请输入:1
请输入姓名:qtx
请输入年龄:45
请输入成绩:78
Traceback (most recent call last):
File “D:\python\项目\学生管理系统.py”, line 87, in
view.main()
File “D:\python\项目\学生管理系统.py”, line 72, in main
self.select_menu()
File “D:\python\项目\学生管理系统.py”, line 59, in __select_menu
self.
input_student()
File “D:\python\项目\学生管理系统.py”, line 78, in __input_student
stu = StudentModel(n01, name, age, score)
^^^
NameError: name ‘n01’ is not defined

进程已结束,退出代码1

需求:

    请前辈们指点一下报错原因和解决方法,谢谢!
Jason990420
最佳答案
stu = StudentModel(n01, name, age, score)

Variable n01 not defined in method __input_student


print(item.id, item.name, item.age, item.score)

No attribute id for item in method __output_student


class StudentModel:

    def __init__(self, n01=0, name="", age=0, score=0):
        self.n01 = n01
        self.name = name
        self.age = age
        self.score = score


class StudentManagerController:

    __init_n01 = 1000

    def __init__(self):
        self.__stu_list = []

    @property
    def stu_list(self):
        return self.__stu_list

    def add_student(self, stu_info):
        stu_info.n01 = self.__generate_n01()

        self.__stu_list.append(stu_info)

    def __generate_n01(self):
        StudentManagerController.__init_n01 += 1
        return StudentManagerController.__init_n01

    def remove_student(self, n01):
        for item in self.__stu_list:
            if item.n01 == n01:
                self.__stu_list.remove(item)
                return True
        return False

    def update_student(self, str_info):
        for item in self.__stu_list:
            if item.n01 == str_info.n01:
                item.name = stu_info.name
                item.age = stu_info.age
                item.score = stu_info.score
                return True
        return False


class StudentManagerView:

    def __init__(self):
        self.__manager = StudentManagerController()

    def __display_menu(self):
        print("1)添加学生")
        print("2)显示学生")
        print("3)删除学生")
        print("4)修改学生")
        print("5)按照成绩升序显示学生")
        print("6)End")

    def __select_menu(self):
        item = input("请输入:")
        if item == "1":
            self.__input_student()
        elif item == "2":
            self.__output_student(self.__manager.stu_list)
        elif item == "3":
            pass
        elif item == "4":
            pass
        elif item == "5":
            pass
        elif item == "6":
            return "Break"

    def main(self):
        while True:
            self.__display_menu()
            result = self.__select_menu()
            if result == 'Break':
                break

    def __input_student(self):
        n01 = 0                         #It mean nothing here
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        score = int(input("请输入成绩:"))
        stu = StudentModel(n01, name, age, score)
        self.__manager.add_student(stu)

    def __output_student(self, list_output):
        for item in list_output:
            print(item.n01, item.name, item.age, item.score)


view = StudentManagerView()
view.main()
1年前 评论
讨论数量: 1
Jason990420
stu = StudentModel(n01, name, age, score)

Variable n01 not defined in method __input_student


print(item.id, item.name, item.age, item.score)

No attribute id for item in method __output_student


class StudentModel:

    def __init__(self, n01=0, name="", age=0, score=0):
        self.n01 = n01
        self.name = name
        self.age = age
        self.score = score


class StudentManagerController:

    __init_n01 = 1000

    def __init__(self):
        self.__stu_list = []

    @property
    def stu_list(self):
        return self.__stu_list

    def add_student(self, stu_info):
        stu_info.n01 = self.__generate_n01()

        self.__stu_list.append(stu_info)

    def __generate_n01(self):
        StudentManagerController.__init_n01 += 1
        return StudentManagerController.__init_n01

    def remove_student(self, n01):
        for item in self.__stu_list:
            if item.n01 == n01:
                self.__stu_list.remove(item)
                return True
        return False

    def update_student(self, str_info):
        for item in self.__stu_list:
            if item.n01 == str_info.n01:
                item.name = stu_info.name
                item.age = stu_info.age
                item.score = stu_info.score
                return True
        return False


class StudentManagerView:

    def __init__(self):
        self.__manager = StudentManagerController()

    def __display_menu(self):
        print("1)添加学生")
        print("2)显示学生")
        print("3)删除学生")
        print("4)修改学生")
        print("5)按照成绩升序显示学生")
        print("6)End")

    def __select_menu(self):
        item = input("请输入:")
        if item == "1":
            self.__input_student()
        elif item == "2":
            self.__output_student(self.__manager.stu_list)
        elif item == "3":
            pass
        elif item == "4":
            pass
        elif item == "5":
            pass
        elif item == "6":
            return "Break"

    def main(self):
        while True:
            self.__display_menu()
            result = self.__select_menu()
            if result == 'Break':
                break

    def __input_student(self):
        n01 = 0                         #It mean nothing here
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        score = int(input("请输入成绩:"))
        stu = StudentModel(n01, name, age, score)
        self.__manager.add_student(stu)

    def __output_student(self, list_output):
        for item in list_output:
            print(item.n01, item.name, item.age, item.score)


view = StudentManagerView()
view.main()
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!