解题思路

从这道题来看:

  1. 需要在类里用__init__方法,定义初始化属性,即括号内的五个属性。
  2. 定义方法,实现显示各学生信息的功能。
  3. 创建对象,传入参数。
  4. 调用方法,显示各学生信息。
  5. 输出最低、最高成绩,计算平均成绩。

Step 1

list1 = []class Student:def __init__(self, No, name, sex, age, java):self.No = Noself.name = nameself.sex = sexself.age = ageself.java = java

定义初始化方法之后,程序会在一运行就默认调动这些方法,让实例对象拥有这些属性,并根据在创建对象时的传入的参数,定义各属性的值。

定义的空列表用以存储各学生的成绩,方便获取最低、高成绩以及平均分。

Step 2

    def get_information(self, *args):list1.append(self.java)return self.No, self.name, self.sex, self.age, self.java

这里要实现将学生的信息输出,最直接的方法就是用return返回数据(按照上面代码最后一行的形式即可返回多个数据),只要一调用方法就可以返回各学生对象的信息。

这里返回的都是我们前面定义的属性参数。需要让方法具备显示这些属性的功能,就要将它们作为参数传入方法内。此时我们可以用到不定长参数的传递方法,只要写一个*args变量即可,不用像在__init__方法一样,将它们挨个打上去哦。

因为每创建一个学生对象就要多一个计算的分值,为了节省代码,可以直接在显示的方法里将分数加入定义的空列表即可,这样就不用再定义另外的方法来专门对成绩做出处理,而即使定义了针对于成绩的方法,还要创建新的对象来调用方法显示成绩,无形之中增加了不少的代码量。

这里要注意的一点是:一定要把向列表增加数据的代码放在return行的上面,否则你将永远只能得到一个空列表。因为执行完return,程序会直接跳出方法,不再执行return下方的代码。

Step 3

stu1 = Student(1, '甲', '男', 18, 83)
stu2 = Student(2, '乙', '女', 19, 92)
stu3 = Student(3, '丙', '男', 18, 86)
stu4 = Student(4, '丁', '女', 17, 95)
stu5 = Student(5, '五', '男', 20, 88)

创建五个学生对象,将他们的各属性作为参数传入,定义的__init__方法会自动调用,将这些属性赋值给各实例对象。

Step 4

print('学生信息如下:')
print(stu1.get_information())
print(stu2.get_information())
print(stu3.get_information())
print(stu4.get_information())
print(stu5.get_information())

将五个实例对象打点调用显示信息方法,并将他们的成绩加入列表。

Step 5

print(f'{len(list1)}个学生中成绩最高为{max(list1)}')
print(f'{len(list1)}个学生中成绩最低为{min(list1)}')
print(f'{len(list1)}个学生中平均成绩为{sum(list1)/len(list1)}')

可能大家会想到用for循环或者高阶函数来得到最高最低分数以及平均分。

其实直接用min()函数(获取一个数列的最低值) 和max()函数(获取一个数列的最高值)这两个函数可以非常直接又简洁的帮我们获取到列表中的最高最低分。无论上面提到的循环或者高阶函数,它们都需要先对序列进行一定的处理,才能得到符合条件的分值,然后再输出。这两个方法都很难用一行代码就实现处理和输出,无形之中增加了代码量。

平均分的计算我们可以用sum()函数(获取几个数据或一个序列的总和)和len()函数(获取一个序列中元素的个数),通过这两个函数我们也可以一行实现处理和输出。当然也可以用reduce()函数(关于此函数可参考笔者对于高阶函数的介绍)先对列表进行累计和运算,再计算平均分,你可以对比两种方法的效率。


结语

我们在写代码的时候,不光要会写,还要能够高效率低冗余的写出来,这样可以提高我们对于代码学习的掌握和运用以及编程的效率和代码的简洁性。

看到这个题目你会用什么方法呢,如果你有更好的方法,一定要分享给我哦~

【题目】定义学生类,显示五个学生的信息(学号、姓名、性别、年龄、成绩)。并输出他们中最低和最高的成绩,以及计算他们的平均分。相关推荐

  1. c语言定义一个结构体描述学生信息,1)定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 2)设计一个函数,用于显示单个学生信息,函...

    满意答案 q55478683 2016.02.07 采纳率:46%    等级:8 已帮助:361人 struct stu { long int Num; char name[20]; char ge ...

  2. 提升: 建立一个如下的学生情况表,要求先依次输入学生数据元素,然后依次显示当前表中的学生数据元素。 学号 姓名 性别 年龄 2000001 张三 男 20 2000002

    提升: 建立一个如下的学生情况表,要求先依次输入学生数据元素,然后依次显示当前表中的学生数据元素. 学号 姓名 性别 年龄 2000001 张三 男 20 2000002 李四 男 21 200000 ...

  3. 使用c语言写一个学生管理系统,学生信息包含姓名/性别/年龄/成绩,可以查改删增...

    以下是一个简单的学生管理系统的C语言实现,支持对学生信息进行添加.查询.修改和删除. ```c #include <stdio.h> #include <stdlib.h> # ...

  4. 定义一个学生类用来存储学生的信息

    定义一个学生类用来存储学生的信息(包括:学号.姓名.英语成绩.高数成绩.体育成绩),在main方法中定义一个数字存储5名学生的信息. 要求: 1.按名字查询并输出成绩 2.查询并输出所有科目不及格的人 ...

  5. 写一个学生类,属性:学生姓名、性别、考试成绩、年龄;写一个班级类,属性:班级名、班主任名字、所有的学生(数组)。 班级类有方法: (一)获得班级所有学生的平均年龄; (二)获得班级的所有学生总成

    题目:写一个学生类,属性:学生姓名.性别.考试成绩.年龄:写一个班级类,属性:班级名.班主任名字.所有的学生(数组). 班级类有方法: (一)获得班级所有学生的平均年龄: (二)获得班级的所有学生总成 ...

  6. Java集合练习题——使用List存储10个学生信息。(学生信息:姓名,年龄,成绩。统计所有姓“张”的同学的平均成绩。)

    目录 1.引言 2.代码实现 1.引言 看题目获取关键信息,首先创建一个学生类,定义三个成员属性姓名.年龄.成绩,定义有参无参构造方法和get.set方法,并重写toString方法.创建测试类进行测 ...

  7. java创建简单的学生类_Java创建一个学生类步骤代码分享

    创建一个表示学生的实体类Student,其中有学生姓名.性别和年龄信息,要求使用属性来表示学生信息,最终编写测试代码. 首先定义一个名为Student的类:public class Student { ...

  8. java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...

    [单选题]关于 Java 语言叙述错误的是( ). [判断题]类中 static 修饰的变量或方法,可以使用类名或对象的引用变量访问. [命名题]命名下列化合物, [单选题]急性胰腺炎的主要临床表现是 ...

  9. 输入学生姓名和学号c语言程序,C语言 从键盘输入10个学生信息(学号,姓名,年龄,性别)...

    #include void main() { struct { char name[10]; int num; char sex[2]; int age; }s[10]; int i; for(i=0 ...

最新文章

  1. python数据分享人力资源_Python数据分析帮你清晰的了解整理员工们的工作效率和整体满意度...
  2. debian linux vnc,Debian 如何配置安装Xfce桌面+VNC远程桌面服务
  3. 如何用 Linux 技巧大大提高工作效率?
  4. 简单粗暴地入门机器学习
  5. git 公钥提交代码_gitlab上传公钥和项目代码
  6. 3. 吴恩达机器学习课程-作业3-多分类和神经网络
  7. 【数理统计】数理统计的简单认识
  8. 自己给打印机怎么加粉墨,联想兄弟打印机加粉步骤
  9. 联想ThinkBook解锁FN键
  10. 给Date加上23时59分59秒
  11. 《富爸爸,穷爸爸》这本书有何价值?
  12. 反客为主:巧妙用grldr冒名顶替ntldr引导XP/Ubuntu
  13. 决策树之C4.5实现(离散属性与连续,属性并存)
  14. 香港中文大学9(深圳)医学院李丛磊组招收博后/科研助理/博士生
  15. VisualSVN Server安装失败解决
  16. m5stack——基于语音交互模块的物联居家管理系统 (STM32F103ZET6开发板+UART通信)
  17. QT:表格操作QTableView详解
  18. 天堂2服务器维护,天堂II-官方网站-腾讯游戏
  19. 常用稳压二极管参数表
  20. 【贝叶斯滤波与卡尔曼滤波】 第四讲 连续随机变量的贝叶斯公式

热门文章

  1. 我们需要为世界改变多少——程序员职业规划群群规
  2. c语言打印浮点数错误,printf打印浮点数出错
  3. 【失业即将到来?】AI时代会带来失业潮吗?
  4. Pretty Json 插件 - JSON格式化 - Sublime 插件
  5. 大资管用卫星研究宏观经济,效果如何?
  6. android教育系统_适用于学生的十大教育性Android应用程序
  7. CSDN大四毕业生,投稿几个小问题。
  8. 使命召唤9进入黑屏问题
  9. iOS代码动态消除iPhone X底部工具条(ToolBar)与键盘间的夹缝
  10. [cgdc12][nvidia]显卡底层知识