通过前面三篇的学习,相信大家对Python已经有了入门,今天我们来实践一下:打印斐波纳契数列。
什么是斐波纳契数列?
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n – 1)+F(n – 2)(n ≥ 2,n ∈ N*)。
用Python实现打印斐波纳契数列是非常简单的,代码如下:
#!/usr/bin/python3 # Fibonacci series: 斐波纳契数列 # 两个元素的总和确定了下一个数 a, b = 0, 1 # 等价于:n=0,m=1,a=n,b=m,也就是 a=0, b=1 while b < 10: print(b) a, b = b, a+b # a=b, b=a+b
这个例子中,我们用到了复合赋值语句。在第一行的复合赋值语句中,变量 a 和 b 同时得到新值 0 和 1。最后一行再次使用了同样的方法,可以看到,右边的表达式会在赋值变动之前执行。右边表达式的执行顺序是从左往右的。
例子中,还用到了While循环语句。Python 中 while 语句的一般形式:
while 判断条件(condition): 执行语句(statements)……
执行流程图如下:

需要注意的是,在Python中,没有 do……while 这样的循环。While循环还支持else,当 while … else 在条件语句为 false 时执行 else 的语句块。
我们来看下面的例子:
#!/usr/bin/python3 count = 0 while count < 5: print (count, " 小于 5") count = count + 1 else: print (count, " 大于或等于 5")
表弟问我,我们在其他编程语言中都学过自增(+)、自减(–),上面这个例子程序中
print (count, " 小于 5") count = count+1
为什么不换成
print (count++, " 小于 5")
然而,在Python中是没有 ++
和 --
的。要实现自增和自减的话,我们可以使用如下操作:
a = a + 1 # 或 a += 1
这是因为在Python中,数字类型是不可变数据。也就是数字类型数据在 内存
中是不会发生改变,当变量值发生改变时,会新申请一块内存赋值为新值,然后将变量指向新的内存地址。
我们看下面的例子:
>>> a = 10 >>> id(a) 140530470127960 >>> a += 1 >>> id(a) 140530470129080
可以看到当 a
的值发生改变时,a
指向的内存地址也发生了改变。而在C语言中,a
指向的内存地址并不会发生改变,而是改变内存的内容。
+=
是改变变量,相当于重新生成一个变量,把操作后的结果赋予这个新生成的变量。++
是改变了对象本身,而不是变量本身,即改变数据地址所指向的内存中的内容。
所以,Python中不存在自增(++)或自减(–)。
但是,有时候在Python程序中,我们还会看到存在 ++i
这种形式,这其实不是自增,只是简单的表示正负数的正号而已。正正得正,负负得正,所以 ++i
和 --i
都是 i
。