1 class Fibs: 2 def __init__(self): 3 self.a = 0 4 self.b = 1 5 def next(): 6 self.a, self.b = self.b, self.a+self.b 7 return self.a 8 def iter(): 9 return self
这段代码有点看不懂啊
获取斐波那契数列
首先是初始化了斐波那契数列的首项和第二项 然后按照后一项的值等于前两项值的和进行返回
但是我如果想调用的话该怎么去写呢?
这并没有一个值去决定要输出多少项的斐波那契数列
def Fibs(num): result = [0, 1] for i in range(num-2): result.append(result[-2] + result[-1]) return result
而这样的就比较好理解了
求大神帮助!
obj = Fibs()
obj.__next__或者obj.__next__(),我用的3是netx(obj)
上面的类是无限的,这也就是在体现生成器的好处,你可以写个循环去next到你想到的项
下面的函数虽然可以定义多少项,但是result占用的内存一直在增加
晚上回来有些晚 ! 谢大神
但是还有个小问题
我在obj.__next__()中加入obj.__next__(num) ,返回的是__next__() takes 1 positional argument but 2 were given 看不懂这是什么意思
循环应该是
1 class Fibs: 2 def __init__(self): 3 self.a = 0 4 self.b = 1 5 def __next__(self): 6 self.a, self.b = self.b, self.a + self.b 7 return self.a 8 def __iter__(self): 9 return self 10 11 12 obj = Fibs() 13 obj.__next__() 14 fibList = [] 15 for fib in obj: 16 if fib < 1000: 17 fibList.append(fib) 18 else: 19 break 20 21 print(fibList) 22
但是我只想通过输入num 来决定要输出多少项的fibonacci函数
就跟我写的下面哪个函数一样 输入num你就可以输出多少项
@一棵树123:
obj = Fibs()
num = 10 # 你的次数
for i in range(num):
print(next(obj)) # 2里是obj.__next__()
上面的报错是因为__next__只需要本身的self参数(自带了),不接受其他参数
@北方姆Q: 这样子啊 相当于是obj.__next__() 返回的就是一个个的数列中的数 然后通过循环将里面的数挨个打印出来 嘿嘿 新手刚接触 有些时候脑子转不过弯 谢前辈指点!