前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >通过打印斐波纳契数列研究PYTHON连续赋值问题

通过打印斐波纳契数列研究PYTHON连续赋值问题

原创
作者头像
好派笔记
修改2021-09-13 14:40:41
修改2021-09-13 14:40:41
3210
举报
文章被收录于专栏:好派笔记好派笔记

为了研究此问题,先打印一下1000以内的斐波那契数列,然后将循环语句中的变量赋值修改一下。

  1. #myproj1.py
  2. # Fibonacci series: 斐波纳契数列
  3. # 两个元素的总和确定了下一个数
  4. In [1]: a,b=0,1  
  5. In [2]: while b<1000:  
  6.    ...:     print(b,end=',')  
  7.    ...:     a,b=b,a+b  
  8.    ...:  
  9. 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,  

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符

现在将上面的赋值语句调整一下,即将: a,b=b,a+b改成:

  1. a=b  
  2. b=a+b  

整个程序如下:

  1. # myproj2.py
  2. In [4]: a=0  
  3. In [5]: b=1  
  4. In [6]: while b<1000:  
  5.    ...:     print(b,end=',')  
  6.    ...:     a=b  
  7.    ...:     b=a+b  
  8.    ...:  
  9. 1,2,4,8,16,32,64,128,256,512,  

输出的结果不是斐波那契数列,这是为什么? 下面我们研究一下PYTHON连续赋值的问题 在python中是可以使用连续赋值的方式来一次为多个变量进行赋值的

  1. In [9]: a=b=c=1  
  2. In [10]: a=0;b=1  
  3. In [11]: a,b,c=1,1,1  

上面的赋值很简单 再看这样一个例子

  1. In [12]: a=3  
  2. In [13]: a,b=1,a  
  3. In [14]: a  
  4. Out[14]: 1  
  5. In [15]: b  
  6. Out[15]: 3  

第13条中赋值后,a的值变为1,而b的值变为3,b的值不是1,这是为什么?

因为在连续赋值语句中等式右边其实都是局部变量,而不是真正的变量值本身,上面例子中右边的a,在python解析的时候,只是把变量a的指向的变量3赋给b,而不是a=1之后a的结果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档