-7

我和一个愚蠢的老师在一个 python 课上,我无法让任何事情正常工作。这是一个简单的程序,一旦我知道它并没有真正达到平均水平,我就想开始工作。

>>> class two:
    def average(a,b):
        return int((a+b)/2)
    def main():
        num = input("Number? ")
        x= int(num)
        y= average(x+1,x)
        print(y)
    main()


Number? 5
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    class two:
  File "<pyshell#28>", line 9, in two
    main()
  File "<pyshell#28>", line 7, in main
    y= average(x+1,x)
NameError: global name 'average' is not defined
4

2 回答 2

3

average您的错误发生是因为您在使用它时没有任何全局名称。您似乎对何时以及是否使用class关键字感到困惑。在您的特定示例中,您不需要它-两者都average希望main成为全局函数,而不是类方法。

试试这个程序:

def average(a,b):
    return int((a+b)/2)
def main():
    num = input("Number? ")
    x= int(num)
    y= average(x+1,x)
    print(y)
main()

或者,如果您想了解课程:

class two:
    def __init__(self, x,y):
        self.x = x
        self.y = y
    def average(self):
        return (self.x + self.y)/2
def main():
    t = two(7,42)
    print(t.average())

main ()

注意 now 的声明如何average包含一个self参数——它将调用链接到一个特定的two对象。还要注意如何调用averagechanged: it is now t.average()。在这种情况下,t是将作为 的第一个参数传递的特定对象two.average()

于 2013-08-30T13:43:54.130 回答
1
def average(a,b):
    return int((a+b)/2)

def main():
    print 'enter a number'
    num = raw_input()
    y = average(int(num)+1,int(num))
    print y

main()
于 2013-08-30T13:54:55.747 回答