我擅长python。我刚刚开始学习课程,我试图上课。它似乎不起作用,它每次都给我错误。该代码用于计算学生的平均值。对不起,如果很多代码都错了,对我来说这是一个干的... TY
我的代码:
class studentgrades:
def __init__(self,grades,num_of_grades,grades_total):
self.grades = []
self.num_of_grades = num_of_grades
self.num_of_grades = 0
self.grades_total = grades_total
self.grades_total = 0
def studentaverage(self,average):
self.average = average
for i in grades:
self.num_of_grades += 1
for i in grades:
self.grades_total += i
self.average = self.grades_total / self.num_of_grades
student1 = studentgrades(100,0,0)
print student1.studentaverage
这是我的错误消息:
<bound method studentgrades.studentaverage of <__main__.studentgrades instant at 0x0229CE90>>
答案 0 :(得分:2)
首先,您将self
变量初始化为空列表,并将0
初始化为__init__
方法的参数。这通常会使你通过类的任何参数无效,立即将它们重置为空。
另外,要调用类的方法,请传递它所需的参数数量。如果你正在调用一个没有参数的方法,你仍然需要打开和关闭括号,例如student1.studentaverage()
。
我将如何做到这一点。
class studentgrades:
def __init__(self,grades):
self.grades = grades
self.num_of_grades = len(grades)
self.grades_total = sum(grades)
def average(self):
return self.grades_total / self.num_of_grades
grades = [100, 82, 75, 93]
student1 = studentgrades(grades)
print student1.average()
这样,你只需要在课程中输入成绩列表。
更好的是,使用 TheSoundDefense 的建议,您可以通过调用__init__
和{{1}来消除在sum
方法中定义另外两个变量的需要} len
方法中grades
列表的方法。
average
答案 1 :(得分:1)
我想到的一点是,首先代码没有正确缩进。其次,你不能调用类似student1.studentaverage
的函数。而不是它必须是student1.studentaverage(param)
。替换param你的参数。
答案 2 :(得分:0)
def studentaverage(self,average):
...
return self.average
然后修改你的print语句:
print studentaverage()