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-13 22:00:16 浏览: 140
好的,我来按照你的要求逐步实现这个问题。
首先是定义一个Student类,代码如下:
```python
class Student:
def __init__(self, name, sex, score):
self.name = name
self.sex = sex
self.score = score
def get_name(self):
return self.name
def get_sex(self):
return self.sex
def get_score(self):
return self.score
```
这个类中包括了姓名、性别和成绩三个实例数据,以及以这三个数据为参数的构造方法和对应的get方法。
接下来是将字符串转化为Student类实例的函数makestudent,代码如下:
```python
def makestudent(studentstring):
name, sex, score = studentstring.strip().split(',')
return Student(name, sex, float(score))
```
这个函数输入一个以逗号分隔的字符串,返回一个Student类实例。需要注意的是,这里将score转换为float类型,以便后面进行比较。
最后是测试程序,代码如下:
```python
import sys
# 输入数据
lines = sys.stdin.readlines()
students = []
for line in lines:
students.append(makestudent(line))
# 打印成绩最高分的信息
max_score = max([student.get_score() for student in students])
for student in students:
if student.get_score() == max_score:
print(f"name: {student.get_name()}, sex: {student.get_sex()}, score: {student.get_score()}")
# 打印不及格的名单
print("不及格的名单:")
for student in students:
if student.get_score() < 60:
print(student.get_name())
```
这个程序首先使用sys.stdin.readlines()方法从标准输入中读取多行数据,然后将每一行数据转化为Student类实例并存储在一个列表中。接着找到成绩最高的学生,打印出姓名、性别和成绩。最后打印出不及格的名单。
希望这个程序能够满足你的要求!
阅读全文