编写学生类,分别为年龄、性别、各科成绩添加对应的Set函数,在函数内检测数据的合法性后再设置对应的成员变量值,如果有非法数据,则抛出异常,在主函数中产生学生对象并根据输入对其各属性赋值,捕获异常并提示对应的错误问题。
时间: 2024-03-25 14:35:30 浏览: 25
好的,以下是实现该学生类的代码示例:
```python
class Student:
def __init__(self):
self.age = None
self.gender = None
self.scores = {'Chinese': None, 'Math': None, 'English': None}
def set_age(self, age):
if not isinstance(age, int) or age < 0:
raise ValueError('Invalid age')
self.age = age
def set_gender(self, gender):
if gender not in ['male', 'female']:
raise ValueError('Invalid gender')
self.gender = gender
def set_score(self, subject, score):
if subject not in self.scores:
raise ValueError('Invalid subject')
if not isinstance(score, int) or score < 0 or score > 100:
raise ValueError('Invalid score')
self.scores[subject] = score
# 主函数
try:
s = Student()
age = int(input('请输入学生年龄:'))
s.set_age(age)
gender = input('请输入学生性别(male或female):')
s.set_gender(gender)
for subject in ['Chinese', 'Math', 'English']:
score = int(input(f'请输入{subject}成绩:'))
s.set_score(subject, score)
print('学生信息设置成功!')
except ValueError as e:
print('学生信息设置失败:', e)
```
在上述代码中,我们定义了一个 `Student` 类表示学生,包含年龄、性别和各科成绩等属性。对于每个属性,我们都定义了对应的 `set` 函数,用于在设置属性值时检测数据的合法性。如果数据不合法,则抛出异常,否则设置属性值。在主函数中,我们根据用户的输入,创建一个学生对象并调用对应的 `set` 函数设置属性值。如果出现异常,则捕获异常并输出错误信息。