我想在 python 中获取每个科目的分数并返回其平均值和总和的类(class)分数。我知道如果我收到 4 个参数而不是平均分母应该是 4,但是我如何才能将它变成随输入数量变化的固定代码?,而不仅仅是计数数字和类型 4。我尝试了 Len(self) 或使用 for 循环计数,但 Len 出错,for 循环并不那么容易。
class score:
def __init__(self, language, math, english, science):
self.language = language
self.math = math
self.english = english
self.science = science
...
def sum_scores(self):
result = self.language + self.math + self.english + self.science
return result
def average(self):
average = self.sum_scores()/4 # Here is the problem!
return average
这是我关于堆栈的第一个问题。很抱歉我的英语不好和愚蠢的问题。
最佳答案
首先不要使用 4 个单独的属性。使用dict
来存储属性;然后你可以查询dict
的大小。
class score:
def __init__(self, language, math, english, science):
self.scores = {'language': language, 'math': math, 'english': english, 'science': science}
...
def sum_scores(self):
return sum(self.scores.values())
def average(self):
return self.sum_scores() / len(self.scores)
如果您仍然需要每个分数的属性,请使用属性:
class score:
def __init__(self, language, math, english, science):
self.scores = {'language': language, 'math': math, 'english': english, 'science': science}
@property
def language(self):
return self.scores['language']
# etc.
def sum_scores(self):
return sum(self.scores.values())
def average(self):
return self.sum_scores() / len(self.scores)
https://stackoverflow.com/questions/67287020/