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) 输入格式: 输入多行以逗号分隔开的字符串 输出格式: 打印最高分的所有数据,并且打印不及格的名单 输入样例: 在这里给出一组输入。例如: mary,female,78 tom,male,65 susan,female,90 jack,male,23 johon,male,98 chris,female,44 zip,female,87 kiki,male,38 steven,male,58 kate,female,66 输出样例: 在这里给出相应的输出。例如: the highest score: johon male 98.0 no pass: jack chris kiki steven
时间: 2024-02-06 22:11:24 浏览: 65
好的,我理解了你的问题。以下是代码实现:
```python
class Student:
def __init__(self, name, sex, score):
self.name = name
self.sex = sex
self.score = float(score)
def get_name(self):
return self.name
def get_sex(self):
return self.sex
def get_score(self):
return self.score
def makestudent(studentstring):
student_list = studentstring.strip().split(',')
return Student(student_list[0], student_list[1], student_list[2])
if __name__ == '__main__':
import sys
students = []
for line in sys.stdin.readlines():
students.append(makestudent(line))
highest_score = max(students, key=lambda x: x.score)
print(f"the highest score: {highest_score.name} {highest_score.sex} {highest_score.score:.1f}")
no_pass_list = [student.name for student in students if student.score < 60]
print("no pass:", ' '.join(no_pass_list))
```
这里先定义了一个 `Student` 类,包含姓名、性别和成绩三个实例变量,并实现了对应的构造方法和获取实例变量的方法。
然后定义了 `makestudent` 函数,用于将以逗号分隔开的字符串转化为 `Student` 类的实例。
最后在主程序中,使用 `sys.stdin.readlines()` 读入多行数据,用 `makestudent` 函数将每行数据转化为 `Student` 类的实例,并将其存储在列表 `students` 中。然后使用 `max` 函数找到成绩最高的学生,输出其信息。最后使用列表推导式找到成绩不及格的学生,将其姓名存储在列表 `no_pass_list` 中,并输出。
阅读全文