# wk07_1019_串列與元組_陳姿頴 ## 章節大綱 5.1 串列(list)的使用 - 一維串列宣告 - 使用[],用逗號分隔不同元素 - 空串列:[] 5.2 使用 for迴圈讀取串列 5.3 串列搜尋與計次 5.4 串列元素新增與刪除 5.5 串列排序 5.6 串列常用的方法列表 5.7 元組(Tuple) - 可視為常數數列 --- ## 課程目標 1. list 2. tuple ## [inclass practice] ```python list1 = [] list2 = ["蘋果","柚子","水梨"] list3 = [["澳洲","英國","法國"],["羽球","籃球","足球"]] print(list1) print(list2) print(list3) ``` [] ['蘋果', '柚子', '水梨'] [['澳洲', '英國', '法國'], ['羽球', '籃球', '足球']] ```python print("我最想去的國家是 %s" % list3[0][0]) #%s:稍後要插入的變數的位置 #%:特殊的操作符,用來將一個變數的值插入到字串中的%s位置 #list3[0][0]:list3的第一組的第一個元素 ``` 我最想去的國家是 澳洲 ```python print(list2[0:2:1]) ``` ['蘋果', '柚子'] ```python list2.append("檸檬") #新增一元素在最後 print(list2) ``` ['蘋果', '柚子', '水梨', '檸檬'] ```python list2.pop() #刪掉最後一個 ``` '檸檬' ```python list2.pop(0) #刪掉第一個 ``` '蘋果' ```python print(list2) ``` ['柚子', '水梨'] ```python list2[1] = "冬瓜" #修改第二個 print(list2) ``` ['柚子', '冬瓜'] ```python list2.insert(0, "橘子") #新增一元素在最前面 print(list2) ``` ['橘子', '柚子', '冬瓜'] ```python list2.remove("冬瓜") #移除特定元素 ``` ### {範例} 1. 串列出值設定 \<list1> 2. 使用 for 迴圈讀取串列元素 \<list2> 3. 利用迴圈配合索引讀取串列元素 \<list3> 4. 以串列計算班級成績 \<append1> 5. 刪除指定串列元素 \<remove> 6. 成績由大到小排序 \<sorted> ```python list4 = [100,89,79] print(max(list4)) print(min(list4)) print(len(list4)) print(list4.count(79)) print(list4.index(79)) ``` 100 79 3 1 2 ```python #使用 for 迴圈讀取串列元素 \<list2> print(list4) for n in list4 : print(n,end = ' ') ``` [100, 89, 79] 100 89 79 ```python for i in range(len(list4)): print(i, list4[i], sep= ",") #sep:定義在多個值或元素之間的分隔符 ``` 0,100 1,89 2,79 ```python list2 = ["蘋果","柚子","水梨"] for i in range(len(list2)): print(i, list2[i], sep= ",") #len:該函數返回序列的長度,通常以一個整數形式返回 ``` 0,蘋果 1,柚子 2,水梨 ```python for n in list2: print(n * 3, end=' ') ``` 蘋果蘋果蘋果 柚子柚子柚子 水梨水梨水梨 ```python #以串列計算班級成績 \<append1> #指定輸入 scores = [100,90,50,70,100,100,90,60,30,40] score = list ttl = 0 avg = 0 n = len(scores) for score in scores : ttl = ttl + score n = n + 1 avg = ttl / n print("總成績 : %3.0f , 平均成績 : %5.2f " % (ttl , avg)) #%3.0f:輸出一個浮點數,佔用3個字符的位置,小數部分顯示為0 #%5.2f:輸出一個浮點數,佔用5個字符的位置,小數部分顯示2位 ``` 總成績 : 730 , 平均成績 : 36.50 ```python #不指定輸入 scores = [] inscore = 0 while inscore != -1: inscore = int(input("enter score, to end just enter -1 and enter")) if inscore != -1: scores.append(inscore) print(scores) ``` enter score, to end just enter -1 and enter100 enter score, to end just enter -1 and enter-1 [100] ```python scores = [] inscore = 0 while inscore != -1: #!=:不等於 inscore = int(input("enter score, to end just enter -1 and enter")) if inscore != -1: scores.append(inscore) ttl = 0 for score in scores: ttl = ttl + score n = len(scores) avg = ttl / n print("共有%d人, 總成績 : %3.0f , 平均成績 : %5.2f " % (n, ttl , avg)) ``` enter score, to end just enter -1 and enter100 enter score, to end just enter -1 and enter-1 共有1人, 總成績 : 100 , 平均成績 : 100.00 ```python #刪除指定串列元素 \<remove> fruits = ["蘋果","柚子","水梨","葡萄柚"] #to_del = "柚子" fruits.remove("柚子") ``` ## [afterclass practice] 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) 2. 教學影音 lesson 8 #### ( B ) 1. 執行下列程式,下列結果何者正確? list1 = [1, 2, 3, 4, 5] print(list1[0]) (A) 0 (B) 1 (C) 2 (D) [1, 2, 3, 4,5] ```python list1 = [1, 2, 3, 4, 5] print(list1[0]) ``` 1 #### ( A ) 2. 執行下列程式,下列結果何者正確? list4 = ["香蕉", "蘋果", "橘子"] print(list4[-3]) (A) 香蕉 (B) 蘋果 (C) 橘子 (D) 錯誤,索引值超過範圍 ```python list4 = ["香蕉", "蘋果", "橘子"] print(list4[-3]) ``` 香蕉 #### ( D ) 3. 執行下列程式,n 的值為多少? scores = [85, 79, 93] n=len(scores) (A) 0 (B) 1 (C) 2 (D)3 ```python scores = [85, 79, 93] n=len(scores) print(n) ``` 3 #### ( B ) 4. 執行下列程式,n 的值為多少? list1 = ["香蕉","蘋果","橘子"] n = list1.index("蘋果") (A) 0 (B) 1 (C) 2 (D)3 ```python list1 = ["香蕉","蘋果","橘子"] n = list1.index("蘋果") print(n) ``` 1 #### ( A ) 5. 執行下列程式,下列結果何者正確? list1 = ["香蕉","蘋果","橘子"] n = list1.count("西瓜") (A) n=0 (B) n=1 (C) n=2 (D) 出現錯誤 ```python list1 = ["香蕉","蘋果","橘子"] n = list1.count("西瓜") print(n) ``` 0 #### ( D ) 6. 執行下列程式,下列結果何者正確? list1 = [1,2,3,4,5,6] m = list1.pop() n = list1.pop(2) (A) m=1, n=6 (B) m=2, n=3 (C) m=6, n=2 (D) m=6, n=3 ```python list1 = [1,2,3,4,5,6] m = list1.pop() n = list1.pop(2) print("m=",m,",","n=",n) ``` m= 6 , n= 3 #### ( C ) 7. 執行下列程式,下列顯示結果何者正確? list1 = [1,2,3,4,5,6] list1.insert(-1, "愛") list1.insert(12, "台灣") print(list1[5]) (A) -1 (B) 12 (C) 愛 (D)台灣 ```python list1 = [1,2,3,4,5,6] list1.insert(-1, "愛") list1.insert(12, "台灣") print(list1[5]) ``` 愛 #### ( C ) 8. 執行下列程式,下列顯示結果何者正確? list1 = [1,2,3,4,5,6] del list1[1] print(list1) (A) [1,2,3,4,5,6] (B) [2,3,4,5,6] (C) [1,3,4,5,6] (D) [1,2,3,4,5] ```python list1 = [1,2,3,4,5,6] del list1[1] print(list1) ``` [1, 3, 4, 5, 6] #### ( D ) 9. 執行下列程式,下列顯示結果何者正確? list1=[3,2,1,5] list1.reverse() print(list1) (A) [3,2,1,5] (B) [1,2,3,5] (C) [5,3,2,1] (D) [5,1,2,3] ```python list1=[3,2,1,5] list1.reverse() print(list1) ``` [5, 1, 2, 3] #### ( C ) 10. 執行下列程式,下列顯示結果何者正確? list1=[3,2,1,5] list2=sorted(list1,reverse=True) print(list2) (A) [3,2,1,5] (B) [1,2,3,5] (C) [5,3,2,1] (D) [5,1,2,3] ```python list1=[3,2,1,5] list2=sorted(list1,reverse=True) print(list2) ``` [5, 3, 2, 1] ## [selfpractice] ### {綜合演練} 實作2. 輸入喜歡的水果,直到Enter鍵結束,找尋fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"]水果串列是否包含此水果,並顯示該水果是串列中的第幾項 ```python fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"] n = 0 while True: a = input("輸入喜歡的水果") if a in fruit: n = fruit.index (a)+ 1 print(f"包含{a},第{n}項") else: print(f"{a}不在水果串列中") ``` 輸入喜歡的水果蘋果 包含蘋果,第2項 實作6. 西元2021年是牛年。請你開發一個程式: 當使用者輸入他的出生西元年之後,畫面會顯示這個西元年的生肖。 ```python sign = ["鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"] while True: a = int(input("輸入他的出生西元年")) n = (a - 1900) % 12 b = sign[n] print(f"{a}年的生肖是{b}") ``` 輸入他的出生西元年1900 1900年的生肖是鼠