为你而战329 2022-04-16 19:24 采纳率: 62.5%
浏览 42
已结题

python学生系统

可以帮我修改一下代码吗

运行结果及报错内容
Traceback (most recent call last):
  File "D:\python\课堂练习\exam02.py", line 42, in <module>
    student=Student(name,age,num,score)
TypeError: Student() takes no arguments
class Student:
    def _init_(self,name,age,num,score):
        self.name=name
        self.age=age
        self.num=num
        self.score=score
    def _str_(self):
        return '姓名:{} 年龄:{} 学号:{} 成绩:{}'.format(self.name,self.age,self.num,self.score)
class Class:
    def _init_(self,name):
        self.name=name
        self.stu_list=[]
        self.stu_dict={}
    def add_stu(self,student):
        self.stu_list.append(student)
        self.stu_dict[stu.num]=student
    def sort_stu(self,key,reverse):
        self.stu_list.sort(key=key,reverse=reverse)
    def del_stu(self,num):
        s=self.stu_dict.pop(num)
        self.stu_list.remove(s)
    def show_stu(self):
        for s in self.stu_list:
            print(s)
    def get_stu(self,num):
        return self.stu_dict.get(num)
class_=Class()
def showui():
    print('1.添加学生')
    print('2.删除学生')
    print('2.查看学生')
    print('4.查找学生')
    print('5.按照成绩排序')
while(1):
    showui()
    key=int(input('请输入数字:'))
    if(key==1):
        name=input('请输入学生姓名:')
        age=int(input('请输入学生年龄:'))
        num=int(input('请输入学生学号:'))
        score=int(input('请输入学生成绩:'))
        student=Student(name,age,num,score)
        class_.add_stu(student)
    if(key==2):
        num=int(input('请输入要删除的学生学号:'))
        class_.del_stu(num)
    if(key==3):
        class_.show_stu()
    if(key==4):
        num=int(input('请输入要查找的学生学号:'))
        class_.get_stu(num)
    if(key==5):
        print('1.按照分数排列;2.按照年龄排列;3.按照学号排列')
        temp=int(input('请选择数字来选择条件:'))
        if temp==1:
            class_.sort_stu(key=lambda s:s.score,reverse=True)
            class_.show_stu()
        if temp==2:
            class_.sort_stu(key=lambda s:s.age,reverse=True)
            class_.show_stu()
        if temp==3:
            class_.sort_stu(key=lambda s:s.num,reverse=True)
            class_.show_stu()
    if(key==6):
        break



```)

  • 写回答

3条回答 默认 最新

  • 陈年椰子 2022-04-16 19:39
    关注

    构造函数是前后两个下划线

    
    class Student:
        def _init_(self,name,age,num,score):
            self.name=name
            self.age=age
            self.num=num
    
    改为
    
    
    class Student:
        def __init__(self,name,age,num,score):
            self.name=name
            self.age=age
            self.num=num
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 修改了问题 4月16日
  • 创建了问题 4月16日

悬赏问题

  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的