Python入门100个实例(42)——range函数的用法

从本实例学到什么

  1. range函数的用法。
  2. 输出一个整数,占10列列宽。
  3. 每输出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个,换行一次

知识点讲解

  1. 在效果上,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次。

  2. 在效果上,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次。

  3. 调用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。

  4. 调用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,不能省略。

  5. 调用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。

  6. 调用range()函数,完整的写法要传入3个参数,依次是起点,重点和增量。传入2个参数时,省略了增量,意味着增量是1。传入1个参数时,省略了起点和增量,意味着起点是0,增量是1。

小结

  1. 调用range()函数的完整写法是: range(<起点>, <终点>, <增量>)。作用是生成等差序列,相邻元素之间的差值是<增量>。注意,序列不包含终点。
  2. 调用range()函数,完整的写法要传入3个参数,依次是起点,重点和增量。传入2个参数时,省略了增量,意味着增量是1。传入1个参数时,省略了起点和增量,意味着起点是0,增量是1。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章