{%hackmd @themes/orangeheart %} ## wk08_1026_字典 ### 醫放三 B1003210 應雨岑 CH6 1. 串列的使用 2. 使用 for迴圈讀取串列 3. 串列搜尋與計次 4. 串列元素新增與刪除 5. 串列排序 6. 串列常用的方法列表 7. 元組(Tuple) - 6.1 字典基本操作 - 建立字典 - 字典取值 - 字典維護 - 6.2 字典進階操作 - 字典進階功能整理 - in 功能 - keys 及 values方法 - items 方法 - setdefault 方法 ## 今日課程內容 <pre> 1. 5.5 串列排序 2. 5.6 串列常用的方法列表 3. 5.7 元組(Tuple) 4. 6.1 字典基本操作 </pre> ## NOTE <pre> divmod(7,3) #答案為(2,1) 表示(商,餘數) 元組內的元素不能修改,但可以轉換成串列 字典是以大括號呈現{} 由小排到大 score.sort() 由大排到小 score.sort(reverse=True) 反轉是錯誤的則不用反轉,由小排到大 score.sort(reverse=False) </pre> ## [ INCLASS PRACTICE ] * 實作6 ```python """ 西元2021年是牛年。請你開發一個程式: 當使用者輸入他的出生西元年之後,畫面會顯示這個西元年的生肖。 """ 生肖=["鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"] x=int(input("請輸入西元出生年分")) a=x-2020 b=a%12 print("生肖是",生肖[b]) ``` 請輸入西元出生年分2000 生肖是 龍 ```python divmod(7,3) #答案為(2,1) 表示(商,餘數) ``` (2, 1) * 成績由小排到大 ```python score=[21,63,100,91] score.sort() print(score) #由大排到小 score.sort(reverse=True) print(score) #反轉是錯誤的,則不用反轉,由小排到大 score.sort(reverse=False) print(score) #內建的排序功能 score=sorted(score) print(score) ``` [21, 63, 91, 100] [100, 91, 63, 21] [21, 63, 91, 100] [21, 63, 91, 100] ```python fruits=["banana","apple","orange","pineapple","watermelon"] fruit="cherry" i=1 if fruits.count(fruit)>0: i=fruits.index(fruit) print("找到%s了,在第%d個" % (fruit,i+1)) else: print("沒有找到%s" %fruit) ``` 沒有找到cherry * 刪除指定串列元素 ```python put=[] putin=1 while (putin!="0"): putin=str(input("請輸入水果,若輸入結束請按0")) if (putin!="0"): put.append(putin) print(put) no=input("請輸入不要的水果名稱") b=put.count(no) if b!=0: number=put.index(no) del put[number] print("刪除%s成功" % no) print(put) else: print("沒有找到%s" %no) ``` 請輸入水果,若輸入結束請按0a 請輸入水果,若輸入結束請按0s 請輸入水果,若輸入結束請按0d 請輸入水果,若輸入結束請按0f 請輸入水果,若輸入結束請按0g 請輸入水果,若輸入結束請按00 ['a', 's', 'd', 'f', 'g'] 請輸入不要的水果名稱s 刪除s成功 ['a', 'd', 'f', 'g'] * 刪除指定串列元素2 ```python put=[] putin=1 while (putin!="0"): putin=str(input("請輸入水果,若輸入結束請按0")) if (putin!="0"): put.append(putin) print(put) while True: no=input("請輸入不要的水果名稱") if no=="0": break if put.count(no)!=0: number=put.index(no) del put[number] print("刪除%s成功" % no) print(put) else: print("沒有找到%s" %no) ``` 請輸入水果,若輸入結束請按0a 請輸入水果,若輸入結束請按0s 請輸入水果,若輸入結束請按0d 請輸入水果,若輸入結束請按0f 請輸入水果,若輸入結束請按0g 請輸入水果,若輸入結束請按00 ['a', 's', 'd', 'f', 'g'] 請輸入不要的水果名稱w 沒有找到w 請輸入不要的水果名稱a 刪除a成功 ['s', 'd', 'f', 'g'] 請輸入不要的水果名稱0 * 反轉串列: ```python #list + while 練習: 編寫一個程式,將一個字元串列反轉,例如,將['a', 'b', 'c']轉換為['c', 'b', 'a']。 list1=["a","b","c","d","e"] #list1.reverse() #print(list1) list1[0:5:1] print(list1) ``` ['a', 'b', 'c', 'd', 'e'] * 找出最大值: ```python #list + while 練習: 編寫一個程式,在一個整數串列中查找並返回最大的數字。 list2=[21,63,91,20] themax=list2[0] for n in list2: if n>themax: themax=n print(themax,max(list2)) ``` 91 91 * 找出最小值 ```python #list + while 練習: list2=[21,63,91,20] themin=list2[0] for n in list2: if n<themin: themin=n print(themin,min(list2)) ``` 20 20 ```python dict={"a":20,"b":50,"c":50,"d":18,"e":50,"a":120} print(dict) ``` {'a': 120, 'b': 50, 'c': 50, 'd': 18, 'e': 50} <function print(*args, sep=' ', end='\n', file=None, flush=False)> * 血型個性查詢 ```python 血型_個性={"A":"內向穩重","B":"開朗樂觀","O":"堅強自信","AB":"聰明自然"} blood="A" result= 血型_個性[blood] print("查詢結果:",result) ``` 查詢結果: 內向穩重 ## 全部的note <pre> W1 計算符號之間可以加空白鍵 <br> ** : 幾次方<br> sep="." : 分隔符號為. end="/" : 結束用/結束 在print內寫入%d : 放入參數答案 (最後在答案要加%) %s : 放入的答案為字串 %f : 放入的答案包含全部小數點 %.1f : 包含 1位小數點 %.3f : 包含 3位小數點 寫法如下- print("身高為%d cm,體重為%d kg,BMI為%.1f " % (height,weight,bmi)) print("顯示的文字",參數名字)<br> my_height = input("請輸入身高(cm)") : 可以輸入文字進去對話框 使用者輸入的文字要轉換成"int" ()<br> W2 print("姓名 成績") print("%3s %3d"%(name1,score1)) #按照字元數進行規則排列出一格表格格式 W3 **次方 //整除的數 /除以 %餘數 and 放在兩個運算子中間,判斷True or False,當兩個都為True才會是True or 放在兩個運算子中間,判斷True or False,當兩個都為False才會是False W4 if,else,elif需使用冒號:還有縮排來寫code .upper可以讓程式不用判斷大小寫 W5 串列list用中括弧括起來 for和其他語法一樣,他同樣也是需要用到:還有縮排來寫程式 W6 break會跳出這個迴圈 continue跳出執行這個code 繼續執行下一個i的程式 None 為一個什麼都沒有的數字,但是他可以做加減乘除的運算 W7 串列名稱=[1,2,3,...] #可以放字串、數字等等的 另外也可以宣告空的串列list=[] 多為變數的宣告 list=[["1"],["1,2"],["1,2,3"]] 如果想要顯示第二個串列的第一個內容:print(list[1][0])) # 0表示第一個資料,1表示第二個-意思是程式計算的方式是由0開始數 若想檢索特定的元素可以使用list[起始索引,終止索引,間隔]的方式進行 也可以索引-值,表示從最後一個開始數list[-1] len(list)可以計算元素數量 max(list)可以找到元素內最大值 list.index(...)可以找...在清單中第幾個 .count 可以數...出現幾次 .append 插入一個元素在最後 .insert(3,8)插入8某一個位置(第三個) .pop 移除最後一個元素 </pre> ## [ afterclass practice ] > 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) > 2. 教學影音 : 新手入門#8Dictionary * ## 綜合演練 ### ( B ) 1. 關於字典,下列何者敘述是錯誤的? (A)以「鍵-值」對方式儲存 (B)資料依序排列 (C)可由「鍵」取得「值」 (D)資料隨機排列 #### 因為字典和串列最大的差別就是字典是資料隨機排列的,因此沒有按順序排 ### ( D ) 2. d={"香蕉":20, "蘋果":50},print(d[0]) 的結果為何? (A)香蕉 (B)20 (C)50 (D)產生錯誤 #### 因為字典的資料沒有排序功能,所以他不知道第0個是什麼 ```python #會顯示錯誤 d={"香蕉":20, "蘋果":50} print(d[0]) ``` --------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[4], line 3 1 #會顯示錯誤 2 d={"香蕉":20, "蘋果":50} ----> 3 print(d[0]) KeyError: 0 ### ( B ) 3. d={"香蕉":20, "蘋果":50},print(d["香蕉"]) 的結果為何? (A)香蕉 (B)20 (C)50 (D)產生錯誤 #### 因為會由香蕉這個鍵找到所對應的值,即為20 ```python d={"香蕉":20, "蘋果":50} print(d["香蕉"]) ``` 20 ### ( C ) 4. d={"香蕉":20, "蘋果":50},print(d.get("巴樂", 60)) 的結果為何? (A)20 (B)50 (C)60 (D)None #### 雖然沒有所對應到的鍵(芭樂),但是有傳入一個值,因此就將芭樂的值設為60,引自查詢字典時找的到 ```python d={"香蕉":20, "蘋果":50} print(d.get("巴樂", 60)) ``` 60 ### ( A ) 5. d={"香蕉":20, "蘋果":50},程式「d["巴樂"]=60」的作用為: (A)新增資料 (B)修改資料 (C)取得資料 (D)刪除資料 #### 因為這是一個增加字典資料的方法 ```python d={"香蕉":20, "蘋果":50} print(d) d["巴樂"]=60 print(d) ``` {'香蕉': 20, '蘋果': 50} {'香蕉': 20, '蘋果': 50, '巴樂': 60} ### ( A ) 6. d={"香蕉":20, "蘋果":50},程式「d.clear()」的作用為: (A)刪除所有元素 (B)刪除一個元素 (C)刪除字典 (D)以上皆非 #### clear不只會把鍵刪除,值也會一起刪除,如果只有del d[""],就只會刪除該元素 ```python d={"香蕉":20, "蘋果":50} print(d) d.clear() print(d) #刪了,所以是空的 ``` {'香蕉': 20, '蘋果': 50} {} ### ( C ) 7. d={"香蕉":20, "蘋果":50},print("香蕉" in d) 的結果為何? (A)20 (B)50 (C)True (D)False #### 這是一個判斷的問題,所以答案會出現True或False ```python d={"香蕉":20, "蘋果":50} print("香蕉" in d) ``` True ### ( C ) 8. 下列哪一個功能可取得字典中所有「值」? (A)in (B)keys (C)values (D)items #### 因為keys是鍵,values是值,items是值+鍵 ```python d={"蘋果":10,"香蕉":20,"鳳梨":30,"葡萄":40 } value=d.values() print(value) ``` dict_values([10, 20, 30, 40]) ### ( D ) 9. 下列哪一個功能可取得字典中所有「鍵」及所有「值」? (A)in (B)keys (C)values (D)items #### 如上題,因為keys是鍵,values是值,items是值+鍵 ```python d={"蘋果":10,"香蕉":20,"鳳梨":30,"葡萄":40 } item=d.items() print(item) ``` dict_items([('蘋果', 10), ('香蕉', 20), ('鳳梨', 30), ('葡萄', 40)]) ### ( B ) 10. d={"香蕉":20},print(d.setdefault("巴樂")) 的結果為何? (A)20 (B)None (C)巴樂 (D)產生錯誤 #### 因為字典內沒有芭樂,但d.setdefault("巴樂")後字典裡就有這個鍵了,但是他的值預設為None ```python d={"香蕉":20} print(d.setdefault("巴樂")) print(d) ``` None {'香蕉': 20, '巴樂': None} * ## 教學影音 新手入門8 Dictionary 這次的教學影片主要是在介紹關於字典的功能,包括新增、刪除資料等等;另外還提到在字典中加入串列的元素,加入串列元素後就可以使用串列的語法呼叫字典內的串列內容了。 ## [ self practice ] * 建立學生成績的字典 ```python dict1={} name=input("請輸入學生姓名,若不輸入則按0") while name!="0": score=input("請輸入學生成績") dict1[name]=score name=input("請輸入學生姓名,若不輸入則按0") print(dict1) ``` 請輸入學生姓名,若不輸入則按0小名 請輸入學生成績78 請輸入學生姓名,若不輸入則按0小紅 請輸入學生成績89 請輸入學生姓名,若不輸入則按0小花 請輸入學生成績88 請輸入學生姓名,若不輸入則按00 {'小名': '78', '小紅': '89', '小花': '88'}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up