新手关于python创建函数的问题~~~

c2091986 2010-10-14 11:51:30
计算斐波那契数列,num为做几次计算
>>> def fibs(num):
... result=[0,1]
... for i in range(int(num)):
... result.append(result[-2]+result[-1])
... return result
...
但是不管fibs的参数为多少,总是只会得出第三个数:
>>> fibs(4)
[0, 1, 1]
但是如果不定义函数,直接计算的话,相同的代码,结果却是正常的:
>>> result=[0,1]
>>> num=4
>>> for i in range(num):
... result.append(result[-2]+result[-1])
...
>>> result
[0, 1, 1, 2, 3, 5]
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
def fibs(num):
... result=[0,1]
... for i in range(int(num)):
... ... result.append(result[-2]+result[-1])
... return result

这样才是对的
  • 打赏
  • 举报
回复
sorry看错了- -

是因为缩进
def fibs(num):
... result=[0,1]
... for i in range(int(num)):
... result.append(result[-2]+result[-1])
... return result
这两行代码是同级的
result.append(result[-2]+result[-1])
return result
只执行了一次循环就return跳出了

最好不要在IDLE里python shell中测试,放到正常编译环境下看比较清楚
  • 打赏
  • 举报
回复
result=[0,1]
result这个局部变量被你重复调用函数的时候重新赋值了,一直只被你重复成[0,1]添加参数1,得到[0,1]
c2091986 2010-10-15
  • 打赏
  • 举报
回复
谢谢啊,原来是缩进的原因,只要是IDLE里面这种短代码方便,没想到IDLE里面缩进也容易出现缩进问题

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧