### wk08_1026_串列與元組、字典 ##### Ch05_串列與元組 - 5.5 串列排序 - 5.6 串列常用的方法列表 - 5.7 元組(Tuple) ##### Ch06_字典 #### 【inclass practice】 ###### Ch05 ###### 實作6 <pre> 西元2021年是牛年。請你開發一個程式: 當使用者輸入他的出生西元年之後,畫面會顯示這個西元年的生肖。</pre> ```python animals = "鼠牛虎免龍蛇馬羊猴雞狗豬" year = int(input("請輸入你的出生西元年:")) print("西元{}年出生屬{}".format(year, animals[(year-2020) % 12])) ``` 請輸入你的出生西元年:2002 西元2002年出生屬馬 ```python 生肖 = ['鼠','牛','虎','免','龍','蛇','馬','羊','猴','雞','狗','豬'] x = int(input("輸入你的出生西元年:")) a = x -2020 b = a % 12 c = a // 12 print("您的生肖 =", 生肖[b]) ``` 輸入你的出生西元年:2002 您的生肖 = 馬 ```python scores = [21, 63, 91, 20] scores = sorted(scores) print(scores) ``` [20, 21, 63, 91] ###### 實作2 <pre> 輸入喜歡的水果,直到Enter鍵結束,找尋fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"]水果串列是否包含此水果, 並顯示該水果是串列中的第幾項。</pre> ```python fruits = ["香蕉","蘋果","橘子","鳳梨","西瓜"] while True: fruit = input("請輸入喜歡的水果(Enter 結束):") if (fruit==""): break n = fruits.count(fruit) if (n>0): # 串列元素存在 p=fruits.index(fruit) print("%s 在串列中的第 %d 項" %(fruit,p+1)) else: print(fruit,"不在串列中!") ``` 請輸入喜歡的水果(Enter 結束):梨子 梨子 不在串列中! 請輸入喜歡的水果(Enter 結束):西瓜 西瓜 在串列中的第 5 項 請輸入喜歡的水果(Enter 結束): {補充} list + while 練習 1. 計算總和:編寫一個程式,使用迴圈計算一個整數串列的所有元素的總和。 2. 找出最大值:編寫一個程式,在一個整數串列中查找並返回最大的數字。 3. 偶數過濾:編寫一個程式,接受一個整數串列,然後返回一個只包含偶數的新串列。 4. 反轉串列:編寫一個程式,將一個字元串列反轉,例如,將['a', 'b', 'c']轉換為['c', 'b', 'a']。 5. 查找元素:編寫一個程式,接受一個整數串列和一個目標數字,返回目標數字在串列中的索引,如果它不存在,返回-1。 ```python #反轉串列:編寫一個程式,將一個字元串列反轉,例如,將['a', 'b', 'c']轉換為['c', 'b', 'a']。 list1 = ["香蕉","蘋果","橘子","鳳梨","西瓜"] #list1.reverse() #print(list1) list1[0:5:1] ``` ['香蕉', '蘋果', '橘子', '鳳梨', '西瓜'] ```python #找出最大值:編寫一個程式,在一個整數串列中查找並返回最大的數字。 list2 = [21, 63, 91, 20] themaximum = list2[0] for n in list2 : if n > themaximum : themaximum = n print(themaximum) ``` 91 #### 【afterclass practice】 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) 2. 教學影音 : 新手入門#8Dictionary 1. 關於字典,下列何者敘述是錯誤的? (A)以「鍵-值」對方式儲存 (B)資料依序排列 (C)可由「鍵」取得「值」 (D)資料隨機排列 Ans:(B) 2. d={"香蕉":20,"蘋果":50},print(d[0])的結果為何? (A)香蕉 (B)20 (C)50 (D)產生錯誤 Ans:(D) 3. d={"香蕉":20, "蘋果":50},print(d["香蕉"])的結果為何? (A)香蕉 (B)20 (C)50 (D)產生錯誤 Ans:(B) 4. d={"香蕉":20, "蘋果":50},print(d.get("芭樂",60))的結果為何? (A)20 (B)50 (C)60 (D) None Ans:(C) 5. d={"香蕉":20, "蘋果":50},程式「d["芭樂"]=60」的作用為: (A)新增資料 (B)修改資料 (C)取得資料 (D)刪除資料 Ans:(A) 6. d={"香蕉":20, "蘋果":50},程式「d.clear()」的作用為: (A)刪除所有元素 (B)刪除一個元素 (C)刪除字典 (D)以上皆非 Ans:(A) 7. d={"香蕉":20, "蘋果":50},print("香蕉" in d)的結果為何? (A)20 (B)50 (C)True (D)False Ans:(C) 8. 下列哪一個方法可取得字典中所有「值」? (A)in (B)keys (C)values (D)items Ans:(C) 9. 下列哪一个方法可取得典中所有「鍵」及所有「值」? (A)in (B)keys (C)values (D)items Ans:(D) 10. d={"香蕉":20},print(d.setdefault("芭樂"))的結果為何? (A)20 (B)None (C)芭樂 (D)產生錯誤 Ans:(B) ```python #2. d={"香蕉":20,"蘋果":50},print(d[0])的結果為何? d = {"香蕉": 20, "蘋果": 50} print(d[0]) ``` --------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[2], line 4 1 #2. d={"香蕉":20,"蘋果":50},print(d[0])的結果為何? 3 d = {"香蕉": 20, "蘋果": 50} ----> 4 print(d[0]) KeyError: 0 ```python #3. d={"香蕉":20, "蘋果":50},print(d["香蕉"])的結果為何? d = {"香蕉": 20, "蘋果": 50} print(d["香蕉"]) ``` 20 ```python #4. d={"香蕉":20, "蘋果":50},print(d.get("芭樂",60))的結果為何? d={"香蕉":20, "蘋果":50} print(d.get("芭樂",60)) #這是因為 get 方法用於從字典中取得指定鍵的值。如果字典中存在指定的鍵,它將返回該鍵對應的值。 #但如果字典中不存在指定的鍵(在這個例子中是 "芭樂"),get 方法將返回你所提供的預設值,這裡是 60。所以,由於 "芭樂" 不是字典 d 中的鍵,d.get("芭樂", 60) 將返回預設值 60,並印出它。 ``` 60 ```python #7. d={"香蕉":20, "蘋果":50},print("香蕉" in d)的結果為何? d={"香蕉":20, "蘋果":50} print("香蕉" in d) ``` True ```python #10. d=f“香蕉“:20]print(d.setdefault("芭樂"))的結果為何? d = {"香蕉": 20} print(d.setdefault("芭樂")) ``` None