TQC+ Python 第2版|第五章「綜合應用一」詳解答案
BY PJ.
-2025 年 7 月 11 日
(最後更新於: 2025 年 7 月 15 日)
習題 1:保留最強寶可夢
-
題目描述
寶可夢訓練家小智、小霞與小剛一同旅行,三人都持有一些寶可夢如下,且每隻寶可夢有一個代表強弱的數值。假設同一種寶可夢只保留最大數值者,請撰寫程式列出保留下來的寶可夢名稱、強弱數值與持有者。
底下以字典形式列出三位訓練家手中寶可夢的名稱與數值,可直接複製到程式碼內(假設同名稱寶可夢的數值皆不相同): -
小智 = {'皮卡丘': 90, '小火龍': 80, '傑尼龜': 75, '菊石獸': 35, '小拳石': 55, '太陽珊瑚': 25, '可達鴨': 60}
- 小霞 = {'小火龍': 20, '傑尼龜': 85, '菊石獸': 55, '太陽珊瑚': 75, '可達鴨': 65}
-
小剛 = {'皮卡丘': 60, '小火龍': 50, '可達鴨': 45, '小拳石': 75, '太陽珊瑚': 65}
-
輸入輸出
(a) 輸入說明:無
(b) 輸出說明:列出保留下來的寶可夢名稱、強弱數值與持有者 -
範例
小火龍,數值: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) 輸出說明:找出檔案內出現次數最多的中文字(標點符號不計)的前九名,並輸出次數 -
範例
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) 輸出說明:該字串不重複出現的所有字元,並由大到小排序輸出。 -
範例
參考解法
sentence = input('請輸入:')
s = list(set(sentence))
s.sort(reverse=True)
print('_'.join(s))
習題 4:全字母句
-
題目描述
全字母句(pangram)是英文字母表所有的字母都出現至少一次(最好只出現一次)且言之成義的句子。請撰寫一程式,讓使用者輸入一個英文句子,並判斷該句子是否為全字母句。 -
輸入輸出
(a) 輸入說明:一個英文句子
(b) 輸出說明:該句子是否為全字母句 -
範例
提示:可先將所有英文字母放在集合內,再以超集合
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