12循環

  1. 程序的三大流程
  • 在程序開發中,一共有三種流程方式:
    • 順序 —— 從上向下,順序執行代碼
    • 分支 —— 根據條件判斷,決定執行代碼的 分支
    • 循環 —— 讓 特定代碼 重複 執行
      在這裏插入圖片描述
  1. while 循環基本使用
  • 循環的作用就是讓 指定的代碼 重複的執行
  • while 循環最常用的應用場景就是 讓執行的代碼 按照 指定的次數 重複 執行
  • 需求 —— 打印 5 遍 Hello Python
  • 思考 —— 如果要求打印 100 遍怎麼辦?

2.1 while 語句基本語法

初始條件設置 —— 通常是重複執行的 計數器

while 條件(判斷 計數器 是否達到 目標次數):
    條件滿足時,做的事情1
    條件滿足時,做的事情2
    條件滿足時,做的事情3
    ...(省略)...
    
    處理條件(計數器 + 1)

注意:

  • while 語句以及縮進部分是一個 完整的代碼塊

第一個 while 循環

需求

  • 打印 5 遍 Hello Python
    # 1. 定義重複次數計數器
    i = 1
    
    # 2. 使用 while 判斷條件
    while i <= 5:
        # 要重複執行的代碼
        print("Hello Python")
    
        # 處理計數器 i
        i = i + 1
    
    print("循環結束後的 i = %d" % i)

注意:循環結束後,之前定義的計數器條件的數值是依舊存在的

死循環

由於程序員的原因,忘記 在循環內部 修改循環的判斷條件,導致循環持續執行,程序無法終止!

2.2 賦值運算符

  • 在 Python 中,使用 = 可以給變量賦值
  • 在算術運算時,爲了簡化代碼的編寫,Python 還提供了一系列的 與 算術運算符 對應的 賦值運算符
  • 注意:賦值運算符中間不能使用空格

  運算符 	描述           	實例                          
  =   	簡單的賦值運算符     	c = a + b 將 a + b 的運算結果賦值爲 c
  +=  	加法賦值運算符      	c += a 等效於 c = c + a        
  -=  	減法賦值運算符      	c -= a 等效於 c = c - a        
  *=  	乘法賦值運算符      	c *= a 等效於 c = c * a        
  /=  	除法賦值運算符      	c /= a 等效於 c = c / a        
  //= 	取整除賦值運算符     	c //= a 等效於 c = c // a      
  %=  	取 模 (餘數)賦值運算符	c %= a 等效於 c = c % a        
  **= 	冪賦值運算符       	c = a 等效於 c = c  a        

2.3 Python 中的計數方法

常見的計數方法有兩種,可以分別稱爲:

  • 自然計數法(從 1 開始)—— 更符合人類的習慣
  • 程序計數法(從 0 開始)—— 幾乎所有的程序語言都選擇從 0 開始計數

因此,大家在編寫程序時,應該儘量養成習慣:除非需求的特殊要求,否則 循環 的計數都從 0 開始

2.4 循環計算

在程序開發中,通常會遇到 利用循環 重複計算 的需求

遇到這種需求,可以:

  1. 在 while 上方定義一個變量,用於 存放最終計算結果
  2. 在循環體內部,每次循環都用 最新的計算結果,更新 之前定義的變量

需求

  • 計算 0 ~ 100 之間所有數字的累計求和結果

    # 計算 0 ~ 100 之間所有數字的累計求和結果
    # 0. 定義最終結果的變量
    result = 0
    
    # 1. 定義一個整數的變量記錄循環的次數
    i = 0
    
    # 2. 開始循環
    while i <= 100:
        print(i)
    
        # 每一次循環,都讓 result 這個變量和 i 這個計數器相加
        result += i
    
        # 處理計數器
        i += 1
    
    print("0~100之間的數字求和結果 = %d" % result)

需求進階

  • 計算 0 ~ 100 之間 所有 偶數 的累計求和結果

開發步驟

  1. 編寫循環 確認 要計算的數字
  2. 添加 結果 變量,在循環內部 處理計算結果
    # 0. 最終結果
    result = 0
    
    # 1. 計數器
    i = 0
    
    # 2. 開始循環
    while i <= 100:
    
        # 判斷偶數
        if i % 2 == 0:
            print(i)
            result += i
    
        # 處理計數器
        i += 1
    
    print("0~100之間偶數求和結果 = %d" % result)
  1. break 和 continue

break 和 continue 是專門在循環中使用的關鍵字

  • break 某一條件滿足時,退出循環,不再執行後續重複的代碼
  • continue 某一條件滿足時,不執行後續重複的代碼

break 和 continue 只針對 當前所在循環 有效

3.1 break

  • 在循環過程中,如果 某一個條件滿足後,不 再希望 循環繼續執行,可以使用 break 退出循環

    i = 0
    
    while i < 10:
    
        # break 某一條件滿足時,退出循環,不再執行後續重複的代碼
        # i == 3
        if i == 3:
            break
    
        print(i)
    
        i += 1
    
    print("over")

break 只針對當前所在循環有效

3.2 continue

  • 在循環過程中,如果 某一個條件滿足後,不 希望 執行循環代碼,但是又不希望退出循環,可以使用 continue
  • 也就是:在整個循環中,只有某些條件,不需要執行循環代碼,而其他條件都需要執行

    i = 0
    
    while i < 10:
    
        # 當 i == 7 時,不希望執行需要重複執行的代碼
        if i == 7:
            # 在使用 continue 之前,同樣應該修改計數器
            # 否則會出現死循環
            i += 1
    
            continue
    
        # 重複執行的代碼
        print(i)
    
        i += 1
  • 需要注意:使用 continue 時,條件處理部分的代碼,需要特別注意,不小心會出現 死循環

continue 只針對當前所在循環有效

  1. while 循環嵌套

4.1 循環嵌套

  • while 嵌套就是:while 裏面還有 while

    while 條件 1:
    條件滿足時,做的事情1
    條件滿足時,做的事情2
    條件滿足時,做的事情3
    …(省略)…

      while 條件 2:
          條件滿足時,做的事情1
          條件滿足時,做的事情2
          條件滿足時,做的事情3
          ...(省略)...
      
          處理條件 2
      
      處理條件 1
    

4.2 循環嵌套演練 —— 九九乘法表

第 1 步:用嵌套打印小星星

需求

  • 在控制檯連續輸出五行 *,每一行星號的數量依次遞增
    *
    **
    ***
    ****
    *****
  • 使用字符串 * 打印

    # 1. 定義一個計數器變量,從數字1開始,循環會比較方便
    row = 1
    
    while row <= 5:
    
        print("*" * row)
    
        row += 1
    

第 2 步:使用循環嵌套打印小星星

知識點 對 print 函數的使用做一個增強

  • 在默認情況下,print 函數輸出內容之後,會自動在內容末尾增加換行

  • 如果不希望末尾增加換行,可以在 print 函數輸出內容的後面增加 , end=""

  • 其中 “” 中間可以指定 print 函數輸出內容之後,繼續希望顯示的內容

  • 語法格式如下:

    向控制檯輸出內容結束之後,不會換行

    print("*", end="")

    單純的換行

    print("")

end="" 表示向控制檯輸出內容結束之後,不會換行

假設 Python 沒有提供 字符串的 * 操作 拼接字符串

需求

  • 在控制檯連續輸出五行 *,每一行星號的數量依次遞增

    **




開發步驟

  • 1> 完成 5 行內容的簡單輸出
  • 2> 分析每行內部的 * 應該如何處理?
    • 每行顯示的星星和當前所在的行數是一致的
    • 嵌套一個小的循環,專門處理每一行中 列 的星星顯示

    row = 1
    
    while row <= 5:
    
        # 假設 python 沒有提供字符串 * 操作
        # 在循環內部,再增加一個循環,實現每一行的 星星 打印
        col = 1
    
        while col <= row:
            print("*", end="")
    
            col += 1
    
        # 每一行星號輸出完成後,再增加一個換行
        print("")
    
        row += 1

第 3 步: 九九乘法表

需求 輸出 九九乘法表,格式如下:

    1 * 1 = 1	
    1 * 2 = 2	2 * 2 = 4	
    1 * 3 = 3	2 * 3 = 6	3 * 3 = 9	
    1 * 4 = 4	2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	
    1 * 5 = 5	2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	
    1 * 6 = 6	2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	
    1 * 7 = 7	2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	
    1 * 8 = 8	2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	
    1 * 9 = 9	2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81

開發步驟

    1. 打印 9 行小星星

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********

將每一個 * 替換成對應的行與列相乘


    # 定義起始行
    row = 1
    
    # 最大打印 9 行
    while row <= 9:
        # 定義起始列
        col = 1
    
        # 最大打印 row 列
        while col <= row:
    
            # end = "",表示輸出結束後,不換行
            # "\t" 可以在控制檯輸出一個製表符,協助在輸出文本時對齊
            print("%d * %d = %d" % (col, row, row * col), end="\t")
    
            # 列數 + 1
            col += 1
    
        # 一行打印完成的換行
        print("")
    
        # 行數 + 1
        row += 1

字符串中的轉義字符

\t 在控制檯輸出一個 製表符,協助在輸出文本時 垂直方向 保持對齊
\n 在控制檯輸出一個 換行符

製表符 的功能是在不使用表格的情況下在 垂直方向 按列對齊文本

  轉義字符	描述   
  \\  	反斜槓符號
  \'  	單引號  
  \"  	雙引號  
  \n  	換行   
  \t  	橫向製表符
  \r  	回車   


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