## 【wk08_1026】元組_字典 ## 【inclass practice】 ### 【ch05_串列與元組】 #### {範例} 1. 刪除指定串列元素 \<remove> 2. 成績由大到小排序 \<sorted> ```python # <sorted> # 成績由大到小排序 scores = [56, 81, 99, 76] scores.sort(reverse = False) print(scores) ``` [56, 76, 81, 99] ```python # <sorted> # 成績由大到小排序 scores = [56, 81, 99, 76] scores_sorted = sorted(scores) print(scores_sorted) ``` [56, 76, 81, 99] ```python # <sorted> # 成績由大到小排序 scores = [56, 81, 99, 76] scores = sorted(scores) print(scores) ``` [56, 76, 81, 99] ### 實作2 輸入喜歡的水果,直到Enter鍵結束,找尋fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"]水果串列是否包含此水果, 並顯示該水果是串列中的第幾項 ```python # 查找元素 fruits = ["香蕉","蘋果","橘子","鳳梨","西瓜"] fruit = input("水果: ") i = 1 if fruits.count(fruit) > 0 : i = fruits.index(fruit) print("水果串列包含此水果, 在第", i + 1, "位, 索引值為", i) else : print("水果串列不包含此水果") ``` 水果: 橘子 水果串列包含此水果, 在第 3 位, 索引值為 2 ```python # <remove> # 刪除指定串列元素 fruits = ["香蕉","蘋果","橘子","鳳梨","西瓜"] fruit = input("水果: ") i = 0 if fruits.count(fruit) > 0 : fruits.remove(fruit) print(fruits) else : print("水果串列不包含此水果") ``` 水果: 橘子 ['香蕉', '蘋果', '鳳梨', '西瓜'] ```python # <remove> # 刪除指定串列元素 fruits = ["香蕉","蘋果","橘子","鳳梨","西瓜"] while True : fruit = input("水果: ") if fruit == "": break if fruits.count(fruit) > 0 : fruits.remove(fruit) print(fruits) else : print("水果串列不包含此水果") ``` 水果: 香蕉 ['蘋果', '橘子', '鳳梨', '西瓜'] 水果: 橘子 ['蘋果', '鳳梨', '西瓜'] 水果: 橘子 水果串列不包含此水果 水果: 西瓜 ['蘋果', '鳳梨'] 水果: 藍莓 水果串列不包含此水果 ### 實作6 西元2021年是牛年。請你開發一個程式: 當使用者輸入他的出生西元年之後,畫面會顯示這個西元年的生肖。 ```python 生肖 = ['鼠', '牛', '虎', '兔', '龍', '蛇', '馬', '羊', '猴', '雞', '狗', '豬'] x = int(input("輸入出生西元年= ")) a = x - 2020 b = a % 12 print("生肖 = ", 生肖[b]) ``` 輸入出生西元年= 1966 生肖 = 馬 ```python divmod(a, 12) ``` (-5, 6) ### {補充} list + while 練習 1. 計算總和:編寫一個程式,使用迴圈計算一個整數串列的所有元素的總和。 2. 找出最大值:編寫一個程式,在一個整數串列中查找並返回最大的數字。 3. 偶數過濾:編寫一個程式,接受一個整數串列,然後返回一個只包含偶數的新串列。 4. 反轉串列:編寫一個程式,將一個字元串列反轉,例如,將['a', 'b', 'c']轉換為['c', 'b', 'a']。 5. 查找元素:編寫一個程式,接受一個整數串列和一個目標數字,返回目標數字在串列中的索引,如果它不存在,返回-1。 ```python # 反轉串列 list1 = ["香蕉","蘋果","橘子","鳳梨","西瓜"] list1[: : -1] #print(list1) ``` ['西瓜', '鳳梨', '橘子', '蘋果', '香蕉'] ```python # 找出最大值 list2 = [56, 81, 99, 76] themax = list2[0] for n in list2 : if n > themax : themax = n print(themax, max(list2)) ``` 99 99 ```python # 找出最小值 list2 = [56, 81, 99, 76] themin = list2[0] for n in list2 :b if n < themin : themin = n print(themin, min(list2)) ``` 56 56 ### 【ch06_字典】 6.1 字典基本操作 - 建立字典 - 字典取值 - 字典維護 6.2 字典進階操作 - 字典進階功能整理 - in 功能 - keys 及 values方法 - items 方法 - setdefault 方法 ```python dict3 = {"香蕉" : 20, "蘋果" : 50, "橘子" : 10 , "鳳梨" : 40 ,"西瓜" : 30} print(dict3) ``` {'香蕉': 20, '蘋果': 50, '橘子': 10, '鳳梨': 40, '西瓜': 30} ```python # <dictget> # 血型個性查詢 血型_個性 = {"A" : "好強", "B" : "健忘", "AB" : "沒長性" , "O" : "討厭競爭" } blood = input("血型 = ") result = 血型_個性[blood] print("查詢結果", result) ``` 血型 = A 查詢結果 好強 ## 【afterclass practice】 1. 綜合演練 : 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) 2. 教學影音 : 新手入門 #8Dictionary ### 綜合演練 #### 1. 關於字典,下列何者敘述是錯誤的? ( A ) 以「鍵-值」對方式儲存 ( B ) 資料依序排列 ( C ) 可由「鍵」取得「值」 ( D ) 資料隨機排列 答: ( B ) 資料依序排列 #### 2. d={"香蕉":20, "蘋果":50},print(d[0]) 的結果為何? ( A ) 香蕉 ( B ) 20 ( C ) 50 ( D ) 產生錯誤 ```python d={"香蕉":20, "蘋果":50} print(d[0]) ``` KeyError Traceback (most recent call last) Cell In[1], line 3 1 d={"香蕉":20, "蘋果":50} ----> 3 print(d[0]) KeyError: 0 #### 3. d={"香蕉":20, "蘋果":50},print(d["香蕉"]) 的結果為何? ( A ) 香蕉 ( B ) 20 ( C ) 50 ( D ) 產生錯誤 ```python d={"香蕉":20, "蘋果":50} print(d["香蕉"]) ``` 20 #### 4. d={"香蕉":20, "蘋果":50},print(d.get("巴樂", 60)) 的結果為何? ( A ) 20 ( B ) 50 ( C ) 60 ( D ) None ```python d={"香蕉":20, "蘋果":50} print(d.get("巴樂", 60)) ``` 60 #### 5. d={"香蕉":20, "蘋果":50},程式「d["巴樂"]=60」的作用為: ( A ) 新增資料 ( B ) 修改資料 ( C ) 取得資料 ( D ) 刪除資料 ```python d={"香蕉":20, "蘋果":50} d["巴樂"]=60 print(d) ``` {'香蕉': 20, '蘋果': 50, '巴樂': 60} 答: (A)新增資料 #### 6. d={"香蕉":20, "蘋果":50},程式「d.clear()」的作用為: ( A ) 刪除所有元素 ( B ) 刪除一個元素 ( C ) 刪除字典 ( D ) 以上皆非 ```python d={"香蕉":20, "蘋果":50} d.clear() print(d) ``` {} 答: (A)刪除所有元素 #### 7. d={"香蕉":20, "蘋果":50},print("香蕉" in d) 的結果為何? ( A ) 20 ( B ) 50 ( C ) True ( D ) False ```python d={"香蕉":20, "蘋果":50} print("香蕉" in d) ``` True #### 8. 下列哪一個功能可取得字典中所有「值」? ( A )in ( B )keys ( C )values ( D )items 答: (C)values #### 9. 下列哪一個功能可取得字典中所有「鍵」及所有「值」? ( A ) in ( B ) keys ( C ) values ( D ) items 答: (D)items #### 10. d={"香蕉":20},print(d.setdefault("巴樂")) 的結果為何? ( A ) 20 ( B ) None ( C ) 巴樂 ( D ) 產生錯誤 ```python d={"香蕉":20} print(d.setdefault("巴樂")) ``` None ### 教學影音 ```python 手機 = {"廠牌" : "蘋果", "型號" : "iPhone 14 Pro", "容量" : "512 GB"} 手機["顏色"] = "黑色" print(手機) ``` {'廠牌': '蘋果', '型號': 'iPhone 14 Pro', '容量': '512 GB', '顏色': '黑色'} ```python 手機 = {"廠牌" : "蘋果", "型號" : "iPhone 14 Pro", "容量" : "512 GB"} 手機["顏色"] = ["深紫色", "銀色", "黑色"] print(手機["顏色"][0]) print(len(手機["顏色"][0])) ``` 深紫色 3 ```python 手機 = {"廠牌" : "蘋果", "型號" : "iPhone 14 Pro", "容量" : "512 GB", "顏色" : "深紫色"} 手機["容量"] = ["512 GB", "256 GB"] print(手機) ``` {'廠牌': '蘋果', '型號': 'iPhone 14 Pro', '容量': ['512 GB', '256 GB'], '顏色': '深紫色'} ```python 手機 = {"廠牌" : "蘋果", "型號" : "iPhone 14 Pro", "容量" : "512 GB", "顏色" : "深紫色"} 手機.pop("廠牌") print(手機) ``` {'型號': 'iPhone 14 Pro', '容量': '512 GB', '顏色': '深紫色'} ```python 手機 = {"廠牌" : "蘋果", "型號" : "iPhone 14 Pro", "容量" : "512 GB", "顏色" : "深紫色"} for 規格 in 手機.values() : print(規格) ``` 蘋果 iPhone 14 Pro 512 GB 深紫色 ## 【self practice】 ```python # divmod(x, y) # 用於執行整數的除法和取餘運算。它返回一個包含兩個值的元組。 # 第一個值是除法的結果,第二個值是取餘的結果。 result = divmod(10, 3) print(result) ``` (3, 1)