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