1.设计一个Student类,这个类包括 : 1) 姓名name,性别sex和成绩score三个实例数据 2) 以name,sex,score为参数的构造方法 3) 三个参数的get()方法 2,除此外再编写将字符串转化成Student类的实例的函数makestudent(studentstring) 3.做测试程序: 根据输入的数据,打印成绩最高分的信息及不及格的名单。 提示:输入多行数据,用sys模块的sys.stdin.readlines()方法实现(ctrl+D结束输入)(调试环境用IDLE或高版本Thonny) 输入格式: 输入多行以逗号分隔开的字符串 输出格式: 打印最高分的所有数据,并且打印不及格的名单
时间: 2024-02-06 14:11:21 浏览: 32
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
好的,以下是实现了您要求的 Student 类的代码,并对输入数据进行处理并输出结果的代码:
```python
class Student:
def __init__(self, name, sex, score):
self.name = name
self.sex = sex
self.score = score
def getName(self):
return self.name
def getSex(self):
return self.sex
def getScore(self):
return self.score
def makestudent(studentstring):
student_list = studentstring.split(',')
return Student(student_list[0], student_list[1], int(student_list[2]))
# 处理输入数据
import sys
student_strings = sys.stdin.readlines()
students = []
for student_string in student_strings:
students.append(makestudent(student_string.strip()))
# 计算最高分和不及格名单
max_score = 0
max_students = []
fail_students = []
for student in students:
if student.getScore() > max_score:
max_score = student.getScore()
max_students = [student]
elif student.getScore() == max_score:
max_students.append(student)
if student.getScore() < 60:
fail_students.append(student.getName())
# 输出结果
print("最高分为:")
for student in max_students:
print("{0},{1},{2}".format(student.getName(), student.getSex(), student.getScore()))
print("不及格的名单为:")
for name in fail_students:
print(name)
```
使用示例:
输入:
```
张三,男,80
李四,女,90
王五,男,70
赵六,女,60
钱七,男,50
```
输出:
```
最高分为:
李四,女,90
不及格的名单为:
赵六
钱七
```
解释:
输入数据中有5个学生信息,分别是张三、李四、王五、赵六和钱七。根据输入数据,创建5个 Student 类的实例对象,并将它们保存在了 students 列表中。
计算最高分和不及格名单,得到:
```
最高分为:
李四,女,90
不及格的名单为:
赵六
钱七
```
按照输出格式,输出结果。
阅读全文