c++class Student: def __init__(self): self._age = None self._gender = None self._scores = {'Chinese': None, 'Math': None, 'English': None} @property def age(self): return self._age @age.setter def age(self, value): if not isinstance(value, int) or value < 0: raise ValueError('Invalid age') self._age = value @property def gender(self): return self._gender @gender.setter def gender(self, value): if value not in ['male', 'female']: raise ValueError('Invalid gender') self._gender = value @property def scores(self): return self._scores def set_score(self, subject, score): if subject not in self._scores: raise ValueError('Invalid subject') self._scores[subject] = score def input_score(subject): while True: try: score = int(input(f'请输入{subject}成绩:')) if score < 0 or score > 100: print('分数必须在0-100之间') continue return score except ValueError: print('请输入数字') # 主函数 try: s = Student() s.age = int(input('请输入学生年龄:')) s.gender = input('请输入学生性别(male或female):') for subject in ['Chinese', 'Math', 'English']: score = input_score(subject) s.set_score(subject, score) print('学生信息设置成功!') except ValueError as e: print('学生信息设置失败:', e)
时间: 2024-02-14 09:20:25 浏览: 67
ACM.rar_SCORES_堆石子 编程
这是一个使用 Python 实现的学生类,包含年龄、性别和成绩等属性。其中,年龄和性别使用了装饰器 @property 和 @setter 实现了属性的访问和修改限制。成绩可以通过方法 set_score() 进行设置,输入成绩时使用了一个循环来保证输入的成绩在 0-100 之间。主函数中通过输入设置了学生的信息。
阅读全文