---
# System prepended metadata

title: wk08_1026
tags: [Python]

---

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

