1. 程式人生 > 其它 >全國青少年軟體程式設計等級考試標準 (Python 語言) V1.0.1 二級標準詳解

全國青少年軟體程式設計等級考試標準 (Python 語言) V1.0.1 二級標準詳解

二級標準

一、 瞭解與掌握如下的python程式設計的進階知識,並會使用。

  1. 知道如下幾種資料型別:列表、元組、字典、字串、 range、集合六大內建核心資料型別;

    • python中內建資料型別:

    • 其中列表、元組、字典、字串、 range、集合是二級考試中的重點,列表、元組、字串、 range是重點的重點

  2. 理解列表型別的概念,掌握它的基礎用法及操作:訪問/更 新、獲取元素個數、遍歷、轉換為列表型資料、新增和刪 除、連線、排序等等;

    • 定義:是一個有序且可變的容器,在裡面可以存放多個不同型別的元素

    • 基礎用法及操作:訪問/更 新、獲取元素個數、遍歷、轉換為列表型資料、新增和刪 除、連線、排序

      • 訪問(查詢)

        name_list = [1, "大白", True, '小白']
         print(name_list)
         ​
         #輸出結果:[1, '大白', True, '小白']
      • 獲取元素個數

        name_list = [1, "大白", True, '小白']
         print(len(name_list))
         ​
         #輸出結果: 4

      • 轉換

        name = "德瑪西亞之力"
         name_list = list(name)
         print(name_list)
         ​
         #輸出結果:['德', '瑪', '西', '亞', '之', '力']

      • 遍歷

        • for

          #例項1
           name = "德瑪西亞之力"
           name_list = list(name)
           for data in name_list:
               print(data)
           print(name_list)
           ​
           #輸出結果:
           '''
           德
           瑪
           西
           亞
           之
           力
           ['德', '瑪', '西', '亞', '之', '力']
           ​
           '''
          #例項2
           name_list = [1, "大白", True, '小白']
           for data in name_list:
               print(data)
           print(name_list)
           ​
           #輸出結果
           '''
           1
           大白
           True
           小白
           [1, '大白', True, '小白']
           ​
           '''

        • while

          #例項1
           name_list = []
           while True:
               name = input("請輸入參加遊戲的人名:")
               if name == "王老師":
                   print("大佬來了,遊戲結束")
                   break
               name_list.append(name)
           print("遊戲失敗名單:{}".format(name_list))
           ​
           #輸出結果:
           '''
           請輸入參加遊戲的人名:大白
           請輸入參加遊戲的人名:二白
           請輸入參加遊戲的人名:三白
           請輸入參加遊戲的人名:王老師
           大佬來了,遊戲結束
           遊戲失敗名單:['大白', '二白', '三白']
           ​
           '''

        • 根據需求串講

          #需求
           '''
           設計一個不多於10人的遊戲
           1.遊戲開始,由玩家輸入參加遊戲的人數,並判斷輸入的是否是數字
           2.在第一個條件的基礎上判斷輸入的數字是否大於10,如果大於10人蔘加遊戲,提示使用者"請輸入小於10的數字!"
           3.如果參加遊戲人數小於10人,玩家依次輸入參加遊戲的人名,並新增到空列表  name_list = []
           4.當輸入的名字是"王老師"提示使用者:王老師來了,遊戲結束,輸出遊戲失敗名單
           '''
           ​
           #答案1(不好)
           name_list = []
           n = 10
           num = input("輸入參加遊戲的人數:")
           if not num.isdecimal():
               print("請輸入整數!")
           elif int(num) > n:
               print("請輸入小於10的數字!")
           else:
               for m in range(int(num)):
                   name = input("請輸入參加遊戲的人名:")
                   if name == "王老師":
                       print("{}來了,遊戲結束".format(name))
                       break
                   name_list.append(name)
           print("遊戲失敗名單:{}".format(name_list))
           ​
           #答案2
           name_list = []
           n = 10
           num = input("輸入參加遊戲的人數:")
           while True:
               if not num.isdecimal():
                   print("請輸入整數!")
                   break
               if int(num) > n:
                   print("請輸入小於10的數字!")
                   break
               for m in range(int(num)):
                   name = input("請輸入參加遊戲的人名:")
                   if name == "王老師":
                       print("{}來了,遊戲結束".format(name))
                       break
                   name_list.append(name)
               print("遊戲失敗名單:{}".format(name_list))

      • 更新(包括增加、刪除、修改)

        • append()追加:在列表的最後增加元素,只能一次追加一個元素

          name_list = [1, "大白", True, '小白']
           name_list.append("小小白")
           print(name_list)
           ​
           #輸出結果:[1, '大白', True, '小白', '小小白']
        • 批量追加,將一個列表中的元素逐一新增另外一個列表

          • 列表相加(連線)

            name_list1 = [1, "大白", True, '小白']
             name_list2 = ["小小白", 2]
             print(name_list1 + name_lsit2)
             ​
             #輸出結果:[1, '大白', True, '小白', '小小白', 2]
          • 列表*整數

            name_list = [1, "大白", True, '小白'] * 2
             print(name_list)
             ​
             #輸出結果: [1, '大白', True, '小白', 1, '大白', True, '小白']
          • extend()

            name_list = [1, "大白", True, '小白']
             name_list.extend(["小小白", 2])
             print(name_list)
             ​
             #輸出結果:[1, '大白', True, '小白', '小小白', 2]
          • insert()插入

            0    1      2      3
             name_list = [1, "大白", True, '小白']
             name_list.insert(2, "中白")
             print(name_list)
             ​
                       0     1      2      3      4
             #輸出結果:[1, '大白', '中白', True, '小白']

        • 刪除

          • remove()刪除

            name_list = [1, "大白","中白", True, '小白']
             name_list.remove("中白")
             print(name_list)
             ​
             #輸出結果:[1, '大白', True, '小白']
          • pop()根據索引剔除單個元素

            0    1     2      3      4
             name_list = [1, "大白","中白", True, '小白']
             name_list.pop(2)
             print(name_list)
             ​
             #輸出結果:[1, '大白', True, '小白']

          • clear()清空列表

            name_list = [1, "大白", True, '小白']
             print(name_list)
             name_list.clear()
             print(name_list)
             ​
             #輸出結果:[1, '大白', True, '小白']
             #        []
      • 排序

        • 數字排序

          num_list = [11, 22, 4, 5, 11, 99, 88]
           print(num_list)
           num_list.sort()  # 讓num_list從小到大排序
           print(num_list)
           num_list.sort(reverse=True)  # # 讓num_list從大到小排序
           print(num_list)
           ​
           #輸出結果:
           '''
           [11, 22, 4, 5, 11, 99, 88]
           [4, 5, 11, 11, 22, 88, 99]
           [99, 88, 22, 11, 11, 5, 4]
           ​
           '''
           #注意:排序時內部元素無法進行比較時,程式會報錯(儘量資料型別統一)。
        • 反轉原列表

          num_list = [11, 22, 4, 5, 11, 99, 88]
           print(num_list)
           num_list.reverse()
           print(num_list)
           ​
           #輸出結果:
           '''
           [11, 22, 4, 5, 11, 99, 88]
           [88, 99, 11, 5, 4, 22, 11]
           ​
           '''
      • 巢狀

        num_list = [11, False, "大小白", [1, "大白", True, '小白']]
         print(num_list[3])
         print(numlist[3][2])
         print(numlist[-2][-2])
         num_list[3].append([22, "小小白"])
         print(num_list)
         ​
         #輸出結果:
         '''
         [1, '大白', True, '小白']
         True
         小
         [11, False, '大小白', [1, '大白', True, '小白', [22, '小小白']]]
         ​
         '''

  3. 理解元組型別的概念,理解元組和列表的不同,掌握它的基 礎用法及操作:元組的宣告與賦值、元組的訪問與更新、元 組的遍歷、新增、刪除、排序等等;

    • 定義:是一個有序且不可變的容器,在裡面可以存放多個不同型別的元素。

      d1 = (1)  # 1  只有一個元素的時候最後沒有","  得到的不是元組
       d2 = (1,) # (1,)
    • 元組和列表的區別

      元組是不可變的容器

      列表是可變的容器

    • 基礎用法及操作

      • 宣告

        #宣告空元組
         v1 =()
         #賦值
         v1 = (11,22,33)
         v2 = ("李傑","Alex")
         v3 = (True,123,"Alex",[11,22,33,44])
         print(v1, v2, v3)
         ​
         #輸出結果:
         '''
         (11, 22, 33) ('李傑', 'Alex') (True, 123, 'Alex', [11, 22, 33, 44])
         '''
      • 元組的長度

        v3 = (True,123,"Alex",[11,22,33,44])
         print(len(v3))
         ​
         #輸出結果:4

      • 元組的訪問

        • 索引

          v3 = (True,123,"Alex",[11,22,33,44])
           print(v3[0])
           print(v3[1])
           print(v3[2])
           print(v3[3])
           ​
           #輸出結果:
           '''
           True
           123
           Alex
           [11, 22, 33, 44]
           ​
           '''
        • 切片

          v3 = (True,123,"Alex",[11,22,33,44])
           print(v3[0:2])
           print(v3[:-1])
           print(v3[2:])
           ​
           #輸出結果:
           '''
           (True, 123)
           (True, 123, 'Alex')
           ('Alex', [11, 22, 33, 44])
           ​
           '''
      • 元組相加

        v1 = (11,22,33)
         v2 = ("李傑","Alex")
         v3 = v1 + v2
         print(v3)
         ​
         #輸出結果:
         '''
         (11, 22, 33, '李傑', 'Alex')
         相加得到的是新元組
         '''

      • 元組相乘

        v1 = (11,22,33)
         v2 = v1 * 2
         print(v2)
         ​
         #輸出結果:
         '''
         (11, 22, 33, 11, 22, 33)
         相加得到的是新元組
         '''

      • 元組的更新、刪除、排序:由於元組是不可變的容器,所以不能更新、刪除、排序。

        更新、刪除、排序也只能得到新元組,原來的元組不變

      • 轉換

        name = "德瑪西亞之力"
         name_list = tuple(name)
         for data in name_list:
             print(data)
         print(name_list)
         ​
         #輸出結果:
         '''
         德
         瑪
         西
         亞
         之
         力
         ('德', '瑪', '西', '亞', '之', '力')
         ​
         '''
         ​
         ---------------------------------------
         v3 = [True,123,"Alex",[11,22,33,44]]
         data = tuple(v3)
         print(data)
         ​
         #輸出結果:(True, 123, 'Alex', [11, 22, 33, 44])

      • 元組的遍歷

        v3 = (True,123,"Alex",[11,22,33,44])
         for v in v3:
             print(v)
             
         #輸出結果:
         '''
         True
         123
         Alex
         [11, 22, 33, 44]
         ​
         '''
      • 巢狀

        num_list = (11, False, "大小白", [1, "大白", True, '小白'])
         print(num_list[3])
         print(num_list[3][2])
         print(num_list[-2][-2])
         num_list[3].append([22, "小小白"])
         print(num_list)
         num_list[3][4][0] = 11
         print(num_list)
         ​
         ​
         #輸出結果:
         '''
         [1, '大白', True, '小白']
         True
         小
         (11, False, '大小白', [1, '大白', True, '小白', [22, '小小白']])
         (11, False, '大小白', [1, '大白', True, '小白', [11, '小小白']])
         ​
         '''

        注意:元組是不可變的,列表是可變的,元組裡巢狀列表時,列表中的元素是可以變的

  4. 理解字串型別的概念,掌握它的基礎用法及操作:字串 的分割、結合、替換、檢索、長度獲取。

    • 定義:是不可變有序的,一般表示文字資訊

      name = "德瑪西亞之力"
       name1 = '德瑪西亞之力'
       name2 = "德瑪西亞'之力"
       name3 = '德瑪西亞"之力'
       name4 = """
       德瑪西亞之力
       德瑪西亞"之力
       """
       print(name)
       print(name1)
       print(name2)
       print(name3)
       print(name4)
       ​
       #輸出結果:
       '''
       德瑪西亞之力
       德瑪西亞之力
       德瑪西亞'之力
       德瑪西亞"之力
       ​
       德瑪西亞之力
       德瑪西亞"之力
       ​
       ​
       '''
    • 基礎用法及操作

      • 加法(連線)

        name1 = "德瑪西亞"
         name2 = "之力"
         print(name1 + name2)
         ​
         #輸出結果:德瑪西亞之力
      • 乘法(重複)

        name1 = "德瑪西亞之力"
         name2 = name * 2
         print(name2)
         ​
         #輸出結果:德瑪西亞之力德瑪西亞之力

      • 字串的分割

        name = "德瑪西亞|之力"
         data = name.split("|")
         print(data)
         ​
         ​
         #得到的是一個列表
         #輸出結果:['德瑪西亞', '之力']
      • 替換

        字串是不可變的型別,所以替換字串中的內容是生成新的字串

        name = "德瑪西亞之力"
         data = name.replace("之", "大")
         print(data)
         ​
         #輸出結果:
         '''
         德瑪西亞之力
         德瑪西亞大力
         ​
         '''
      • 格式化format()

        name = "{}可以殺了{},但是打不過{}"
         data = name.format("德瑪西亞", "李白", "貂蟬")
         print(data)
         ​
         #輸出結果:德瑪西亞可以殺了李白,但是打不過貂蟬
         ​
         ​
         #-----------------------------------------
         name = "{1}可以殺了{0},但是打不過{2}"
         data = name.format("德瑪西亞", "李白", "貂蟬")
         print(data)
         ​
         #輸出結果:李白可以殺了德瑪西亞,但是打不過貂蟬
         ​
         ​
         #-----------------------------------------
         name = "{player3}可以殺了{player1},但是打不過{player2}"
         data = name.format(player1="德瑪西亞", player2="李白", player3="貂蟬")
         print(data)
         ​
         #輸出結果:貂蟬可以殺了德瑪西亞,但是打不過李白
         ​
      • 長度獲取

        name = "德瑪西亞之力"
         print(len(name))
         ​
         #結果輸出:6

      • 轉義符 \

        要求輸出:我愛玩"王者榮耀"

        正確方式

        data = "我愛玩\"王者榮耀\""
         print(data)
         ​
         #結果輸出:我愛玩"王者榮耀"
         ​
         #-----------------------------
         data = '我愛玩"王者榮耀"'
         print(data)
         ​
         #結果輸出:我愛玩"王者榮耀"
         ​
         #-----------------------------
         data2 = 'I\'am a teacher'
         print( data2)
         ​
         #結果輸出:I'am a teacher
         ​
         #-----------------------------
         data = '我愛玩\t"王者榮耀"'
         data1 = '我愛玩\n"王者榮耀"'
         data2 = '我愛玩\r"王者榮耀"'
         data3 = '我愛玩\\"王者榮耀"'
         print(data)
         print(data1)
         print(data2)
         print(data3)
         ​
         #結果輸出:
         '''
         我愛玩 "王者榮耀"
         我愛玩
         "王者榮耀"
         "王者榮耀"
         我愛玩\"王者榮耀"
         ​
         '''

        錯誤方式

二、 會編寫較為複雜的Python程式,掌握Python程式設計的控制語句

  1. 理解選擇結構語句的功能和寫法,能夠完成簡單選擇結構的程式;

    • if else :如果條件成立或者不成立,執行程式碼段1,否則執行程式碼段2

      條件最終是布林型別的值

      if 條件成立:
           程式碼段1
       else:
           程式碼段2
      #例項1
       print("開始")
       if True:
         print("123")
       else:
         print("456")
       print("結束")
       ​
       # 輸出結果
       開始
       123
       結束
       ​
       #例項2
       #-----------------------------
       num = 19
       if num > 10:
           print("num變數對應值大於10")
       else:
           print("num變數對應值不大於10")
           
       #例項3    
       #-----------------------------
       number = input("請輸入數字:")
       if int(number)%2 == 1:
           print("{}是奇數".format(number))
       else:
           print("{}是偶數".format(number))    
           
       #例項4    
       #-----------------------------
       name = input("請輸入使用者名稱:")
       passwd = input("請輸入密碼:")
       if name == "teacher" and passwd == "123":
           print("登入成功!")
       else:
           print("登入失敗!")
           
       #例項5  
       #-----------------------------   
       num = input("請輸入數字:")
       if int(num) > 10:
           print("猜錯了!")
       else:
           print("猜對了!")

  2. 掌握程式的單分支結構,理解二分支、多分支結構語句;

    • 單分支結構

      name = input("請輸入使用者名稱:")
       passwd = input("請輸入密碼:")
       print("你輸入的使用者名稱是:{}".format(name))
       print("你輸入的密碼是:{}".format(passwd))
       ​
       #輸出結果:
       請輸入使用者名稱:1
       請輸入密碼:2
       你輸入的使用者名稱是:1
       你輸入的密碼是:2

    • 二分支結構

      name = input("請輸入使用者名稱:")
       passwd = input("請輸入密碼:")
       if name == "teacher" and passwd == "123":
           print("登入成功!")
       else:
           print("登入失敗!")

    • 多分支結構語句

      if 條件A:
         A成立,執行此縮排中的所有程式碼
         ...
       elif 條件B:
         B成立,執行此縮排中的所有程式碼
         ...
       elif 條件C:
         C成立,執行此縮排中的所有程式碼
         ...
       else:
         上述ABC都不成立。

      num = input("請輸入數字")
       data = int(num)
       if data>6:
         print("太大了")
       elif data == 6:
         print("剛剛好")
       else:
         print("太小了")

  3. 理解迴圈結構語句的功能和寫法,能夠完成簡單迴圈結構的 程式;理解for迴圈、while迴圈、break和continue迴圈控制 結構語句;

    • while迴圈

      #死迴圈
       while True:
           print(1)
       print(2)
       ​
       #輸出結果
       '''
       1
       1
       1
       1
       1
       1
       1
       1
       ....
       '''
      while 1 > 2:
           print(1)
       print(2)
       #輸出結果
      print("開始")
      num = 1
      while num < 3:
      	print("滾滾黃河,滔滔長江。")
      	num = 5
      print("結束")
      
      # 輸出:
      '''
      開始
      滾滾黃河,滔滔長江。
      結束
      '''
      print("遊戲開始!!!!")
      
      flag = True
      while flag:
          num = input("請輸入數字")
          data = int(num)
          if data > 6:
              print("太大了")
          elif data == 6:
              print("剛剛好")
              flag = False
          else:
              print("太小了")
      print("遊戲結束!!!!")
    • break

      print("開始")
      while True:
      	print("1")
        break
      	print("2")
      print("結束")
      
      #輸出結果:
      '''
      開始
      1
      結束
      
      '''

      遊戲猜數字:

      1.提示使用者輸入數字,迴圈比較輸入的數字與6的大小,如果大於6,輸出“太大了”;小於6輸出“太小了”;直到等於6,輸出“剛剛好”,並退出迴圈。

      print("遊戲開始!!!!")
      
      num = 0
      flag = True
      while True:
          num = input("請輸入數字")
          data = int(num)
          if data > 6:
              print("太大了")
          elif data == 6:
              print("剛剛好")
              flag = False
              break
          else:
              print("太小了")
      print("遊戲結束!!!!")

      2.提示使用者輸入數字,迴圈比較輸入的數字與6的大小,如果大於6,輸出“太大了”;小於6輸出“太小了”;等於6,輸出“剛剛好”,並退出迴圈。限制使用者輸入次數不能大於5次

      print("遊戲開始!!!!")
      flag = True
      for i in range(5):
          num = input("請輸入數字")
          i += 1
          data = int(num)
          if data > 6:
              print("太大了")
          elif data == 6:
              print("剛剛好")
              flag = False
          else:
              print("太小了")
      
      print("遊戲結束!!!!")

      上述例項可以得出:一般while迴圈用於不知道迴圈的次數,而for迴圈一般用於已知迴圈次數

    • continue

      print("開始")
       i = 1
       while True:
           if i == 7:
               i = i + 1
               continue
           print(i)
           i = i + 1
           if i == 10:
               break
       print("結束")
       ​
       #輸出結果:
       '''
       開始
       1
       2
       3
       4
       5
       6
       8
       9
       結束
       ​
       '''
    • 總結:對於break和continue都是放在迴圈語句中用於控制迴圈過程的,一旦遇到break就停止所有迴圈,一旦遇到continue就停止本次迴圈,開始下次迴圈。

  4. 理解range型別的概念,掌握它的基礎用法及操作。

    • range返回的是一個整數序列的物件

      print(list(range(10)))
       print("*"*20)
       print(list(range(1, 10)))
       print("*"*20)
       print(list(range(0, -10, -1)))
       ​
       #輸出結果:
       [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
       ********************
       [1, 2, 3, 4, 5, 6, 7, 8, 9]
       ********************
       [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

      for i in range(5):
           print(i)
           
       #輸出結果:
       '''
       0
       1
       2
       3
       4
       ​
       '''
       ​
       ​
       ****************************************
       for i in range(2, 5):
           print(i)
       ​
           #輸出結果:
       '''
       2
       3
       4
       ​
       '''
       ​
       ****************************************
       for i in range(10, 1, -1):
           print(i)
           
           #輸出結果:
       '''
       10
       8
       6
       4
       2
       ​
       '''   
       ​
       ****************************************
       for i in range(10, 2, -2):
           print(i)
       #輸出結果是?
       ​
       ****************************************
       for i in range(-3, -10, -2):
           print(i)
           
           #輸出結果:
       '''
       -3
       -5
       -7
       -9
       ​
       '''

range取前不取後

本文來自部落格園,作者:王奇512,轉載請註明原文連結:https://www.cnblogs.com/wangqi512/p/15086943.html