全國青少年軟體程式設計等級考試標準 (Python 語言) V1.0.1 二級標準詳解
二級標準
一、 瞭解與掌握如下的python程式設計的進階知識,並會使用。
-
知道如下幾種資料型別:列表、元組、字典、字串、 range、集合六大內建核心資料型別;
-
python中內建資料型別:
-
其中列表、元組、字典、字串、 range、集合是二級考試中的重點,列表、元組、字串、 range是重點的重點
-
-
理解列表型別的概念,掌握它的基礎用法及操作:訪問/更 新、獲取元素個數、遍歷、轉換為列表型資料、新增和刪 除、連線、排序等等;
-
定義:是一個有序且可變的容器,在裡面可以存放多個不同型別的元素
-
基礎用法及操作:訪問/更 新、獲取元素個數、遍歷、轉換為列表型資料、新增和刪 除、連線、排序
-
訪問(查詢)
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, '小小白']]] '''
-
-
-
理解元組型別的概念,理解元組和列表的不同,掌握它的基 礎用法及操作:元組的宣告與賦值、元組的訪問與更新、元 組的遍歷、新增、刪除、排序等等;
-
定義:是一個有序且不可變的容器,在裡面可以存放多個不同型別的元素。
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, '小小白']]) '''
注意:元組是不可變的,列表是可變的,元組裡巢狀列表時,列表中的元素是可以變的
-
-
-
理解字串型別的概念,掌握它的基礎用法及操作:字串 的分割、結合、替換、檢索、長度獲取。
-
定義:是不可變有序的,一般表示文字資訊
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程式設計的控制語句
-
理解選擇結構語句的功能和寫法,能夠完成簡單選擇結構的程式;
-
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("猜對了!")
-
-
掌握程式的單分支結構,理解二分支、多分支結構語句;
-
單分支結構
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("太小了")
-
-
理解迴圈結構語句的功能和寫法,能夠完成簡單迴圈結構的 程式;理解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就停止本次迴圈,開始下次迴圈。
-
-
理解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