对python非常陌生的人

2024-04-25 04:22:08 发布

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

我和一个愚蠢的老师一起上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

Tags: in程序numbermaindefline老师num
2条回答

发生错误的原因是,在使用全局名称average时,它在作用域中没有任何全局名称。 您似乎对何时以及是否使用class关键字感到困惑。在您的特定示例中,您不需要它averagemain都想成为全局函数,而不是类方法。你知道吗

请尝试此程序:

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

注意average的声明现在如何包含一个self参数,它将调用链接到一个特定的two对象。还要注意average的调用是如何改变的:它现在是t.average()。在本例中,t是将作为two.average()的第一个参数传递的特定对象。你知道吗

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

相关问题 更多 >