TQC+ Python 第2版|第五章「綜合應用一」詳解答案

BY PJ. -2025 年 7 月 11 日
(最後更新於: 2025 年 7 月 15 日)


Chapter 5 綜合應用一 習題

習題 1:保留最強寶可夢

  • 題目描述
    寶可夢訓練家小智、小霞與小剛一同旅行,三人都持有一些寶可夢如下,且每隻寶可夢有一個代表強弱的數值。假設同一種寶可夢只保留最大數值者,請撰寫程式列出保留下來的寶可夢名稱、強弱數值與持有者。
    底下以字典形式列出三位訓練家手中寶可夢的名稱與數值,可直接複製到程式碼內(假設同名稱寶可夢的數值皆不相同):

  • 小智 = {'皮卡丘': 90, '小火龍': 80, '傑尼龜': 75, '菊石獸': 35, '小拳石': 55, '太陽珊瑚': 25, '可達鴨': 60}

  • 小霞 = {'小火龍': 20, '傑尼龜': 85, '菊石獸': 55, '太陽珊瑚': 75, '可達鴨': 65}
  • 小剛 = {'皮卡丘': 60, '小火龍': 50, '可達鴨': 45, '小拳石': 75, '太陽珊瑚': 65}

  • 輸入輸出
    (a) 輸入說明:無
    (b) 輸出說明:列出保留下來的寶可夢名稱、強弱數值與持有者

  • 範例

> 範例輸出
皮卡丘,數值:90,擁有者:小智
小火龍,數值:80,擁有者:小智
傑尼龜,數值:85,擁有者:小霞
菊石獸,數值:55,擁有者:小霞
小拳石,數值:75,擁有者:小剛
太陽珊瑚,數值:75,擁有者:小霞
可達鴨,數值:65,擁有者:小霞
  • 參考解法
小智 = {'皮卡丘': 90, '小火龍': 80, '傑尼龜': 75, '菊石獸': 35, '小拳石': 55, '太陽珊瑚': 25, '可達鴨': 60}
小霞 = {'小火龍': 20, '傑尼龜': 85, '菊石獸': 55, '太陽珊瑚': 75, '可達鴨': 65}
小剛 = {'皮卡丘': 60, '小火龍': 50, '可達鴨': 45, '小拳石': 75, '太陽珊瑚': 65}

traners = {'小智':小智,'小霞':小霞,'小剛':小剛}
best_pokemon = {}

for traner, pokemons in traners.items():
    for pokemon, value in pokemons.items():
        if pokemon not in best_pokemon.keys():
            best_pokemon[pokemon] = (value,traner)
        elif value > best_pokemon[pokemon][0]:
            best_pokemon[pokemon] = (value,traner)

for key,value in best_pokemon.items():
    print(f"{key}, 數值: {value[0]}, 擁有者: {value[1]}")

習題 2:找中文字的出現次數

  • 題目描述
    請撰寫一程式讀取檔案「三分鐘看懂人工智慧.txt」,找出檔案內出現次數最多的中文字(標點符號不計)的前九名,並輸出該字與其出現次數。

  • 檔案「三分鐘看懂人工智慧.txt」的部分內容:

   三分鐘看懂人工智慧.txt  記事本

   檔案(E) 編輯(E) 格式(O) 檢視(V) 說明

   人工智慧 AI
   從底層看懂人工智慧的定義趨勢以及商業應用??
   By Masa Chen

   人工智慧的技術資源以及基礎建設已經趨近成熟不論組織的大小只要策略性的規劃投資與發展方向
   人工智慧都能夠為組織帶來新的商業價值MGI更是於2018年的研究中指出僅有70%的組織採納部分AI技術
   而50%的大型組織全面採納AI技術在2030時,「人工智慧」(包括機器學習將能夠為全球GDP帶來另外13兆
   美元的潛能
  • 輸入輸出
    (a) 輸入說明:檔案「三分鐘看懂人工智慧.txt」
    (b) 輸出說明:找出檔案內出現次數最多的中文字(標點符號不計)的前九名,並輸出次數

  • 範例

> 範例輸出
1. 的 -> 179
2. 是 -> 48
3. 在 -> 42
4. 以 -> 36
5. 學 -> 36
6. 數 -> 36
7. 習 -> 34
8. 一 -> 33
9. 個 -> 31
  • 參考解法
f = open('三分鐘看懂人工智慧.txt','r',encoding='utf-8')
text = f.read()
f.close()

freq = {}

for ch in text:
    if ch.isalpha() and not ('a' <= ch.lower() <= 'z'):  # 排除英文
        freq[ch] = freq.get(ch, 0) + 1 #如果沒有找到則設定0

sort_freq = sorted(freq.items(), key= lambda x : x[1], reverse=True) #用字典value排序



for t,n in sort_freq[:9]:
    print(f"{t} -> {n}")

習題 3:不重複出現的字元

  • 題目描述
    請撰寫一程式,讓使用者輸入一個字串,找出該字串不重複出現的所有字元,並由大到小排序輸出。

  • 輸入輸出
    (a) 輸入說明:一個字串
    (b) 輸出說明:該字串不重複出現的所有字元,並由大到小排序輸出。

  • 範例

> 範例輸入1
請輸入:Stars can't shine without darkness.
> 範例輸出1
'_w_u_t_s_r_o_n_k_i_h_e_d_c_a_S_._
> 範例輸入2
請輸入:It's Okay to not to be Okay.
> 範例輸出2
'_y_t_s_o_n_k_e_b_a_O_I_._
  • 參考解法
sentence = input('請輸入:')

s = list(set(sentence))

s.sort(reverse=True)

print('_'.join(s))

習題 4:全字母句

  • 題目描述
    全字母句(pangram)是英文字母表所有的字母都出現至少一次(最好只出現一次)且言之成義的句子。請撰寫一程式,讓使用者輸入一個英文句子,並判斷該句子是否為全字母句。

  • 輸入輸出
    (a) 輸入說明:一個英文句子
    (b) 輸出說明:該句子是否為全字母句

  • 範例

> 範例輸入1
The quick brown fox jumps over the lazy dog.
> 範例輸出1
True
> 範例輸入2
The jay, pig, fox, zebra and my wolves quack!
> 範例輸出2
True
> 範例輸入3
Sex-charged fop blew my junk TV.
> 範例輸出3
False

提示:可先將所有英文字母放在集合內,再以超集合 issuperset() 判斷之。

  • 參考解法
abc_list = [chr(o) for o in range(ord('a'),ord('z')+1)]
abc = set(abc_list)

sentence = input('請輸入:')
sentence = set([s.lower() for s in sentence]) #全轉為小寫並改為set
print(sentence.issuperset(abc)) #issuperset只能用在set


#TQC #Python #TQCPython第2版 #TQCPython第二版 #綜合應用一 #Python認證 #Python教學 #Python基礎證照 #Python入門

💬 留言區