从本实例学到什么
- range函数的用法。
- 输出一个整数,占10列列宽。
- 每输出5个数,换行。
实例程序
题目描述
用数组存储并输出Fibonacci数列的前20项,按5个一行输出。
Fibonacci数列的规律是:第1项是1,第2项是1。第k项等于第k-1项加上第k-2项之和(k=3, 4, …)。
输出格式:
每行输出5个Fibonacci数,每个数输出占10列列宽。
输出样例:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
上述题目的参考答案
fib = [1, 1] #fib是列表,存储了Fibonacci数列的前两项
for i in range(2, 20):
fib.append(fib[i-1] + fib[i-2]) #求出Fibonacci数列的第3-20项
for i in range(20):
print("%10d"%fib[i], end='') #格式控制串"%10d"使得输出fib[i]占10列。end=''使得输出不换行。
if i % 5 == 4:
print() #每5个,换行一次
知识点讲解
-
在效果上,range(2, 20)生成了以下列表[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]。注意不包含20。因此,上述代码中的第2,3行的循环执行了18次。
-
在效果上,range(20)生成了以下列表[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]。注意该列表不包含20。因此,上述代码中的第4-7行的循环执行了20次。
-
调用range()函数的完整写法是: range(<起点>, <终点>, <增量>)。作用是生成等差序列。举例说明如下:
(3-1) range(0, 5, 1)。起点是0, 终点是5, 增量是1。效果上,生成的等差序列是[0, 1, 2, 3, 4],不包含5。序列的增量是1。
(3-2)range(0, 5, 2)。起点是0, 终点是5, 增量是2。效果上,生成的等差序列是[0, 2, 4],序列最后一个元素不能大于也不能等于含5。序列的增量是2。
(3-3)range(5, 0, -1)。起点是5, 终点是0, 增量是-1。效果上,生成的等差序列是[5, 4, 3, 2, 1],序列最后一个元素不能小于或等于0。序列增量是-1。 -
调用range()函数,可以只传入两个参数。写法是: range(<起点>, <终点>)。这意味着省略了增量这个参数。此时,增量是1——增量的默认值是1。反过来说,增量不是1的话,不能省略第三个从参数,即增量参数。举例说明如下:
(4-1)range(0, 5)。与(3-1)的用法等效。增量是1。
(4-2) range(2, 8)。起点是2,终点是8,增量是1。效果上,生成的等差序列是[2, 3, 4, 5, 6, 7],不包含8——序列的最后一个元素不能大于等于8。
(4-3)range(0, 5, 2)。增量是2,不能省略。
(4-4)range(5, 0, -1)。增量是-1,不能省略。 -
调用range()函数,可以只传入一个参数。写法是: range(<终点>)。这意味着省略了起点和增量这两个参数。此种情形下,起点是0,增量是1。起点参数的默认值是0,增量参数的默认值是1。举例说明如下:
(5-1)range(5)。与上面的(4-1), (3-1)的用法等同。起点是0,增量是1。
(5-2)range(8)。生成的等差序列是[0, 1, 2, 3, 4, 5, 6, 7]。起点是0,增量是1。 -
调用range()函数,完整的写法要传入3个参数,依次是起点,重点和增量。传入2个参数时,省略了增量,意味着增量是1。传入1个参数时,省略了起点和增量,意味着起点是0,增量是1。
小结
- 调用range()函数的完整写法是: range(<起点>, <终点>, <增量>)。作用是生成等差序列,相邻元素之间的差值是<增量>。注意,序列不包含终点。
- 调用range()函数,完整的写法要传入3个参数,依次是起点,重点和增量。传入2个参数时,省略了增量,意味着增量是1。传入1个参数时,省略了起点和增量,意味着起点是0,增量是1。