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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章