我在python 2.7中运行此代码进行练习,但每次都得到相同的错误,无论我如何调用函数fib(n),我不知道为什么它不能得到它。 这是代码:
#!/usr/bin/python
class fibonacci:
def fib(self,n):
a=1
b=0
c=0
count=0
fibo=list()
while count < n:
c = a + b
fibo.append(n)
fibo.append(c)
a = b
b = c
count += 1
return fibo
n=int(raw_input("ingrese n: "))
s = fib(n)
print s
当我运行它时,我收到此错误:
Traceback (most recent call last):
File "./fib.py", line 22, in <module>
s=fib(n)
NameError: name 'fib' is not defined
user@debian:~/Documents$
请帮助
答案 0 :(得分:0)
fib()
是类fibonacci
的一种方法,所以你必须这样称呼它:
s = fibonnaci.fib(n)
如果你只做fib(n)
,那么解释器正在寻找一个名为'fib'的全局函数,在任何类之外。在这种情况下,因为将它放在一个类中并没有为函数提供任何特定的实用程序,你可以这样做:
def fib(n):
...
s = fib(n)
(如果你把它作为命名空间的一种方式放在一个类中,请记住Python使用模块来简化这一点。)
答案 1 :(得分:0)
class fibonacci:
def fib(self,n):
a=1
b=0
c=0
count=0
fibo=list()
while count < n:
c = a + b
fibo.append(n)
fibo.append(c)
a = b
b = c
count += 1
return fibo
n=int(raw_input("ingrese n: "))
s =fibonacci().fib(n)#<-- make sure to have fibonacci() before you call .fib() otherwise it will throw an error
print s
你需要的是从它所在的类中调用fib
函数。它正在查看常规函数所在的全局范围(一个不在类中)。