## 【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)