第六章、分支、迴圈、條件和列舉

xmd_bmx發表於2020-10-31

第六章、分支、迴圈、條件和列舉

一、什麼是表示式

  1. 平常寫的程式碼就是表示式

  2. 定義:表示式是運算子和運算元所構成的序列

  3. a = 1+2*3  # 也是表示式,“=”在python中也是運算子
    a = 1
    b = 2
    c = 3
    a + b * c  # 結果是7
    a or b and c # 結果是1
    
  4. 表示式在運算時,要遵循優先順序,優先順序相同時,都是從左向右1運算,若想打破運算順序,可以加小括號

二、在文字中編寫程式碼

  1. 在Notepad++中建立.py檔案,書寫程式碼,本教程是用vscode書寫
  2. 在命令列中執行.py檔案方式

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-mNWQmYOW-1604139117856)(C:\Users\zhf28\Desktop\學習筆記\Python筆記\python筆記\第6章\img\1.png)]

  1. vscode的配置

    • IDE的功能就是智慧感知和斷點除錯,不安裝外掛也是可以執行程式的

    • 外掛安裝[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-JALei47q-1604139117857)(C:\Users\zhf28\Desktop\學習筆記\Python筆記\python筆記\第6章\img\2.png)]

    • 快捷鍵:ctrl+~:開啟命令列、ctrl+p:快速索引

    • python不強制加分號,不需要花括號將程式碼包裹起來,python靠縮排將程式碼段區分

三、流程控制語句

  1. 註釋,可以讓直譯器不執行程式碼

    1. 單行註釋

      • # csaicha
        
      • 快捷鍵:ctrl+/

    2. 多行註釋

      • """
        caycgasc
        """
        
      • 快捷鍵:shilf+Alt+A

  2. if…else…2

    • # 格式if空格表示bool型別值的資料:
      mood = True
      if mood:
          print("go to left")
      mood = True
      
      # 執行結果沒有區別,但是在邏輯上時有區別的,同一縮排下,為同一程式碼片段裡的
      if mood:
          print("go to left")
          print("1345")
          
      print("1345")
      
      # if...else...
      mood = False
      if mood:
          print("go to left")
      else :
          print("1345")
      
      print("xhauica")
      # 執行結果:1345  xhauica,所以下面一個輸出是物理如何都會執行的
      
    • if後面的關鍵字不一定是變數,也可以是表示式

    • a = 1
      b = 2
      c = 2
      if a or b + 1 == c:
          print("go to left")
      else :
          print("1345")
      
    • 接收使用者輸入input()3

    • account = "qiyue"
      password = "123456"
      
      user_account = input()
      user_password = input()
      
      if account == user_account and password == user_password:
          print("密碼相同")
      else:
          print("密碼不相同")
      
    • 深入if…else…

      • 軟體小技巧,程式碼片段

      • 在書寫程式碼片段時,tap鍵可以用來跳轉到下一個修改的變數,shift和tap鍵可以用來修改上一個變數

      • if可以單獨使用,但是else不可以

      • if True:
            pass
        if True:
            pass
        
      • pass語句叫佔位語句

      • if True:
            # 會報錯,必須加pass
        
      • if...else...巢狀

      • if a:
            if a:
                pass
            else:
                pass    
        else:
            if a:
                pass
            else:
                pass
        
      • 程式碼塊的概念

      • if a:
            a
            a
            a
        else:
            a
            a
            a	# 同級別,都會被執行
        
    • 多層判斷時if...elif...

      • if a:
            a
        elif a:
            a
        elif a:
            a
        else:
            a
        
      • 為什麼在python中沒有switch.case語句:因為官方給出了更好的方案,if...elif..elif...else或者字典來替代

  3. 迴圈4

    • while迴圈

      • # 基本結構,condition是bool型別的資料或者表示式
        while condition:
            # 程式碼塊
        
      • # 死迴圈
        condition = True
        while condition:
            print("I am while")
        
      • # while 在執行的時候會先判斷後面的值
        condition = 0
        while condition:
            condition += 1
            print(condition)
        # 結果是什麼也不會印出來,因為會先進行判斷
        
      • 如何避免while形成死迴圈,那麼就需要將在whlie中有使while不成立的語句

      • while...else當while正常執行的時候結束的時候,才會執行else中的程式碼段

      • while中使用場景,遞迴

    • for迴圈語句

      • # 程式碼結構
        # target_list:臨時變數,expression_list:容器,序列,集合,字典
        for target_list in expression_list:
            pass
        
      • 使用場景:主要是用來遍歷/迴圈 序列或者說集合、字典

      • a = ["anad", "cvav", "dasf", "affaf"]
        for x in a:
            print(x)
        # 結果:
        anad
        cvav
        dasf
        affaf
        
      • for迴圈巢狀

      • a = [["anad", "cvav", "dasf", "affaf"],[1,2,3]]
        for x in a:
            for y in x:
                print(y)
        # 結果:
        anad
        cvav
        dasf
        affaf
        1
        2
        3
        
      • 想讓資料只在一行顯示,在print中加end = ""

      • a = [["anad", "cvav", "dasf", "affaf"],[1,2,3]]
        for x in a:
            for y in x:
                print(y,end=" ")
        # 結果:
        anad cvav dasf affaf 1 2 3
        
      • for...else

      • a = [["anad", "cvav", "dasf", "affaf"],[1,2,3]]
        for x in a:
            for y in x:
                print(y)
        else:
            print("cgacgacasv")
        # 結果:
        anad
        cvav
        dasf
        affaf
        1
        2
        3
        cgacgacasv
        
    • 強制終止迴圈break/countine5

      • # break
        a = [1,2,3,4]
        for x in a:
            if x==2:
                break
            print(x)
        # 結果:
        1
        
      • # countine
        a = [1,2,3,4]
        for x in a:
            if x==2:
                continue
            print(x)
        # 結果:
        1
        3
        4
        
      • # break...else
        a = [1,2,3,4]
        for x in a:
            if x==2:
                break
            print(x)
        else:
            print("cabicg")
        # 結果:
        1
        
      • # countine...else
        a = [1,2,3,4]
        for x in a:
            if x==2:
                countine
            print(x)
        else:
            print("cabicg")
        # 結果:
        1
        3
        4
        cabicg
        
    • 在python中怎麼書寫,重複10次的操作的程式碼:用range6

      • for x in range(0,10):
            print(x,end = " ")
        # 結果:
        0 1 2 3 4 5 6 7 8 9
        
        for x in range(0,10,2):
            print(x,end = " ")
        # 結果:
        0 2 4 6 8
        
        # 練習:
        a = list(range(1,9))
        for x in a:
            if x%2 == 0:
                print(x)
        
      • 序列的切片操作[a​:b:c​] 7

      • b = a[0:len(a):2]
        print(b)
        

  1. 左結合,賦值運算子“=”是右結合 ↩︎

  2. 選擇性問題時可以用 ↩︎

  3. input()函式輸出的資料是字串資料,要想要數值,需要資料轉換 ↩︎

  4. 迴圈語句,while,for ↩︎

  5. break強行終止本層迴圈,countine跳過某次迴圈 ↩︎

  6. range(a,b,c)建立區間,a表示區間第一個數,b表示終止,c表示步長,當要得到的序列是順序的時候,a>b,c>0,當要得到的序列是逆序的時候,a<b,c<0 ↩︎

  7. a:起始資料,b:終止資料,c:切片的步長 ↩︎

相關文章