如何确保Python中self.project_marks为float数组?是否需修改MAX_PROJECTS?
问题:确保Student类的project_marks为float数组的方法,以及MAX_PROJECTS的设置问题
现有如下Python代码,其中Student类的self.project_marks初始化为[0] * MAX_PROJECTS(MAX_PROJECTS=17)。需要明确两个问题:
- 如何确保
self.project_marks是float类型的数组? - 是否需要将
MAX_PROJECTS设置为17.0?
MAX_PROJECTS = 17 class Student: def __init__(self, student_id, first_name, last_name, pronoun, discipline, grade=0.0): # Run validation on the received arguments # assert student_id >= 0, f"Student ID must be greater than or equal to zero!" self.student_id = student_id self.first_name = first_name self.last_name = last_name self.pronoun = pronoun # he she self.discipline = discipline self.grade = grade # 0 to 100 self.project_marks = [0] * MAX_PROJECTS def get_total_marks(self): return sum(self.project_marks) def get_grade(self): return self.grade
解答
一、确保project_marks为float数组的写法
原来的[0] * MAX_PROJECTS生成的是整数元素的数组,要改成float类型,有两种简单方法:
- 直接把初始化值换成
0.0:
这样数组里的每个元素都是float类型的0.0,直接高效。self.project_marks = [0.0] * MAX_PROJECTS - 用列表推导式生成(适合需要额外处理元素的场景):
两种方式效果一致,都能保证数组元素是float类型。self.project_marks = [float(0) for _ in range(MAX_PROJECTS)]
二、MAX_PROJECTS不需要设为17.0
绝对不能把MAX_PROJECTS改成17.0。因为Python里用数字重复生成列表时,这个数字必须是整数——浮点数和列表相乘是不允许的,会直接抛出TypeError错误。MAX_PROJECTS是用来指定项目数量的,本身就是整数概念,保持MAX_PROJECTS = 17(整数类型)才是正确的。
内容的提问来源于stack exchange,提问作者Tim Williamson
相关产品推荐
相关产品推荐

