简单的Python类不会

2024-09-29 03:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我擅长Python。我刚开始上课,我试着做一个班。它似乎不工作,但它给我的错误每次。这个代码是用来计算学生的平均数的。抱歉,如果很多代码是错误的,这是一个试运行为我。。。泰

我的代码:

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>>

Tags: of代码inselffordef错误学生
3条回答

首先,将self变量初始化为空列表,将0变量初始化为__init__方法的参数。通过立即将参数重置为nothing,这实际上会使传递给类的任何参数无效。你知道吗

另外,要调用类的方法,请向它传递所需的参数数。如果调用一个没有参数的方法,仍然需要左括号和右括号,例如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()

这样,你只需通过a班的成绩表。你知道吗

更好的是,使用sounddefence的建议,您可以通过调用sumlen方法中grades列表的grades方法,消除在__init__方法中定义另外两个变量的需要。你知道吗

class studentgrades:

    def __init__(self,grades):
        self.grades = grades

    def average(self):
        return sum(self.grades) / len(self.grades)

grades = [100, 82, 75, 93]
student1 = studentgrades(grades)
print student1.average()

亚当·斯密是对的。您需要修改studentaverage函数以添加返回值:

def studentaverage(self,average):
    ...
    return self.average

然后修改打印语句:

print studentaverage()

我发现的一点是:首先,代码的意图不正确;其次,不能调用像student1.studentaverage这样的函数。相反,它必须是student1.studentaverage(param)。用参数替换param。你知道吗

相关问题 更多 >