先编个小程序
我们尝试来写一个斐波纳契数列。
先说下啥是斐波纳契数列。事情是这样的:
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、
可以看出,这个数列从第3项开始,每一项都等于前两项之和。
问题如下:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对
两个月后,生下一对小兔对数共有两对
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对
以此类推
月份 | 第一个月 | 第二个月 | 第三个月 | 第四个月 | 第五个月 |
---|---|---|---|---|---|
成年兔 | 0 | 0 | 1 | 1 | 2 |
未成年兔 | 1 | 1 | 1 | 2 | 3 |
总对数 | 1 | 1 | 2 | 3 | 5 |
#!/usr/bin/python3
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 10:
print(b)
a, b = b, a+b
输出:
1
1
2
3
5
8
这个例子介绍了几个新特征。
第一行包含了一个复合赋值:变量 a 和 b 同时得到新值 0 和 1。
最后一行再次使用了同样的方法,可以看到,右边的表达式会在赋值变动之前执行。右边表达式的执行顺序是从左往右的。
The first line contains multiple assignment: the variables a and b simultaneously get the new values 0 and 1. On the last line this is used again,demonstrating that the expressions on the right-hand side are all evaluated first before any assignments take place. The right-hand side expressions are evaluated.