測驗6: 組合數據類型 (第6周) + 練習6: 組合數據類型 (第6周)

測驗6

選擇題

1.以下不是Python序列類型的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬數組類型
2.哪個選項對s.index(x)的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬返回序列s中元素x第一次出現的序號
2.哪個選項對s.index(x)的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬返回序列s中元素x第一次出現的序
3.關於Python組合數據類型,以下描述錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬序列類型是二維元素向量,元素之間存在先後關係,通過序號訪問
4.關於Python的元組類型,以下選項錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬元組中元素必須是相同類型
5.給定字典d,哪個選項對x in d的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬判斷x是否是字典d中的鍵
6.S和T是兩個集合,哪個選項對S^T的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬S和T的補運算,包括集合S和T中的非相同元素
7.關於大括號{},以下描述正確的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬直接使用{}將生成一個字典類型
8.給定字典d,哪個選項對d.values()的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬返回一種dict_values類型,包括字典d中所有值
9.列表ls,哪個選項對ls.append(x)的描述是正確的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬只能向列表ls最後增加一個元素x
10.哪個選項是下面代碼的輸出結果?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬3

d= {'a': 1, 'b': 2, 'b': '3'}
print(d['b'])

數字不同數之和

描述
獲得用戶輸入的一個整數N,輸出N中所出現不同數字的和。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
例如:用戶輸入 123123123,其中所出現的不同數字爲:1、2、3,這幾個數字和爲6。

num = input()
s = set(num)
sum = 0
for i in s:
    sum += int(i)
print(sum)

人名最多數統計

描述
編程模板中給出了一個字符串,其中包含了含有重複的人名,請直接輸出出現最多的人名。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

s = '''雙兒 洪七公 趙敏 趙敏 逍遙子 鰲拜 殷天正 金輪法王 喬峯 楊過 洪七公 郭靖 
       楊逍 鰲拜 殷天正 段譽 楊逍 慕容復 阿紫 慕容復 郭芙 喬峯 令狐沖 郭芙 
       金輪法王 小龍女 楊過 慕容復 梅超風 李莫愁 洪七公 張無忌 梅超風 楊逍 
       鰲拜 嶽不羣 黃藥師 黃蓉 段譽 金輪法王 忽必烈 忽必烈 張三丰 喬峯 喬峯 
       阿紫 喬峯 金輪法王 袁冠南 張無忌 郭襄 黃蓉 李莫愁 趙敏 趙敏 郭芙 張三丰 
       喬峯 趙敏 梅超風 雙兒 鰲拜 陳家洛 袁冠南 郭芙 郭芙 楊逍 趙敏 金輪法王 
       忽必烈 慕容復 張三丰 趙敏 楊逍 令狐沖 黃藥師 袁冠南 楊逍 完顏洪烈 殷天正 
       李莫愁 阿紫 逍遙子 喬峯 逍遙子 完顏洪烈 郭芙 楊逍 張無忌 楊過 慕容復 
       逍遙子 虛竹 雙兒 喬峯 郭芙 黃蓉 李莫愁 陳家洛 楊過 忽必烈 鰲拜 王語嫣 
       洪七公 韋小寶 阿朱 梅超風 段譽 嶽靈珊 完顏洪烈 喬峯 段譽 楊過 楊過 慕容復 
       黃蓉 楊過 阿紫 楊逍 張三丰 張三丰 趙敏 張三丰 楊逍 黃蓉 金輪法王 郭襄 
       張三丰 令狐沖 趙敏 郭芙 韋小寶 黃藥師 阿紫 韋小寶 金輪法王 楊逍 令狐沖 阿紫 
       洪七公 袁冠南 雙兒 郭靖 鰲拜 謝遜 阿紫 郭襄 梅超風 張無忌 段譽 忽必烈 
       完顏洪烈 雙兒 逍遙子 謝遜 完顏洪烈 殷天正 金輪法王 張三丰 雙兒 郭襄 阿朱 
       郭襄 雙兒 李莫愁 郭襄 忽必烈 金輪法王 張無忌 鰲拜 忽必烈 郭襄 令狐沖 
       謝遜 梅超風 殷天正 段譽 袁冠南 張三丰 王語嫣 阿紫 謝遜 楊過 郭靖 黃蓉 
       雙兒 滅絕師太 段譽 張無忌 陳家洛 黃蓉 鰲拜 黃藥師 逍遙子 忽必烈 趙敏 
       逍遙子 完顏洪烈 金輪法王 雙兒 鰲拜 洪七公 郭芙 郭襄 趙敏'''
       
dict_name = {}
names = s.split()
for name in names:
    dict_name[name] = dict_name.get(name, 0) + 1
items = list(dict_name.items())
items.sort(key=lambda x:x[1], reverse=True)
print(items[0][0])
 

練習6

實例9:基本統計值計算

獲取以逗號分隔的多個數據輸入(輸入爲一行),計算基本統計值(平均值、標準差、中位數)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
除中位數外,其他輸出保留小數點後兩位。

#CalStatisticsV1.py
def getNum():       #獲取用戶不定長度的輸入
    s = input()
    ls = list(eval(s))
    return ls

def mean(numbers):  #計算平均值
    s = 0.0
    for num in numbers:
        s = s + num
    return s / len(numbers)

def dev(numbers, mean): #計算標準差
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return pow(sdev / (len(numbers)-1), 0.5)

def median(numbers):    #計算中位數
    numbers.sort()
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size//2-1] + numbers[size//2])/2
    else:
        med = numbers[size//2]
    return med

n =  getNum() #主體函數
m =  mean(n)
print("平均值:{:.2f},標準差:{:.2f},中位數:{}".format(m, dev(n,m),median(n)))

實例10:文本詞頻統計:英文版哈姆雷特

文本詞頻統計::一篇文章,出現了哪些詞?哪些詞出現的最多?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪
英文文本:hamlet‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬.txt,參考附件‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
請統計hamlet.txt文件中出現的英文單詞情況,統計並輸出出現最多的10個單詞,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
(1) 單詞不區分大小寫,即單詞的大小寫或組合形式一樣;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
(2) 請在文本中剔除如下特殊符號:!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
(3) 輸出10個單詞,每個單詞一行;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
(4) 輸出單詞爲小寫形式。

def getText():
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ")   #將文本中特殊字符替換爲空格
    return txt

hamletTxt = getText()
words  = hamletTxt.split()
counts = {}
for word in words:			
    counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
for i in range(10):
    word, count = items[i]
    # print ("{0:<10}{1:>5}".format(word, count))  輸出出現最多的10個單詞和其出現次數
    print (word)  #輸出出現最多的10個單詞

人名獨特性統計

描述
編程模板中給出了一個字符串,其中包含了含有重複的人名,請去重後給出獨特性人名的統計。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
輸出模板中字符串共有多少個獨特人名。

s = '''雙兒 洪七公 趙敏 趙敏 逍遙子 鰲拜 殷天正 金輪法王 喬峯 楊過 洪七公 郭靖 
       楊逍 鰲拜 殷天正 段譽 楊逍 慕容復 阿紫 慕容復 郭芙 喬峯 令狐沖 郭芙 
       金輪法王 小龍女 楊過 慕容復 梅超風 李莫愁 洪七公 張無忌 梅超風 楊逍 
       鰲拜 嶽不羣 黃藥師 黃蓉 段譽 金輪法王 忽必烈 忽必烈 張三丰 喬峯 喬峯 
       阿紫 喬峯 金輪法王 袁冠南 張無忌 郭襄 黃蓉 李莫愁 趙敏 趙敏 郭芙 張三丰 
       喬峯 趙敏 梅超風 雙兒 鰲拜 陳家洛 袁冠南 郭芙 郭芙 楊逍 趙敏 金輪法王 
       忽必烈 慕容復 張三丰 楊逍 令狐沖 黃藥師 袁冠南 楊逍 完顏洪烈 殷天正 
       李莫愁 阿紫 逍遙子 喬峯 逍遙子 完顏洪烈 郭芙 楊逍 張無忌 楊過 慕容復 
       逍遙子 虛竹 雙兒 喬峯 郭芙 黃蓉 李莫愁 陳家洛 楊過 忽必烈 鰲拜 王語嫣 
       洪七公 韋小寶 阿朱 梅超風 段譽 嶽靈珊 完顏洪烈 喬峯 段譽 楊過 楊過 慕容復 
       黃蓉 楊過 阿紫 楊逍 張三丰 張三丰 趙敏 張三丰 楊逍 黃蓉 金輪法王 郭襄 
       張三丰 令狐沖 郭芙 韋小寶 黃藥師 阿紫 韋小寶 金輪法王 楊逍 令狐沖 阿紫 
       洪七公 袁冠南 雙兒 郭靖 鰲拜 謝遜 阿紫 郭襄 梅超風 張無忌 段譽 忽必烈 
       完顏洪烈 雙兒 逍遙子 謝遜 完顏洪烈 殷天正 金輪法王 張三丰 雙兒 郭襄 阿朱 
       郭襄 雙兒 李莫愁 郭襄 忽必烈 金輪法王 張無忌 鰲拜 忽必烈 郭襄 令狐沖 
       謝遜 梅超風 殷天正 段譽 袁冠南 張三丰 王語嫣 阿紫 謝遜 楊過 郭靖 黃蓉 
       雙兒 滅絕師太 段譽 張無忌 陳家洛 黃蓉 鰲拜 黃藥師 逍遙子 忽必烈 趙敏 
       逍遙子 完顏洪烈 金輪法王 雙兒 鰲拜 洪七公 郭芙 郭襄'''
ls = s.split()
ss = set(ls)
print(len(ss))

字典翻轉輸出

描述
讀入一個字典類型的字符串,反轉其中鍵值對輸出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
即,讀入字典key:value模式,輸出value:key模式。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
輸入格式
用戶輸入的字典格式的字符串,如果輸入不正確,提示:輸入錯誤。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
輸出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
給定字典d,按照print(d)方式輸出

s = input()
try:
    d = eval(s)
    e = {}
    for k in d:
        e[d[k]] = k
    print(e)
except:
    print("輸入錯誤")

《沉默的羔羊》之最多單詞

描述
附件是《沉默的羔羊》中文版內容,請讀入內容,分詞後輸出長度大於2且最多的單詞。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
如果存在多個單詞出現頻率一致,請輸出按照Unicode排序後最大的單詞。

import jieba
f = open("沉默的羔羊.txt")
ls = jieba.lcut(f.read())
#ls = f.read().split()
d = {}
for w in ls:
    d[w] = d.get(w, 0) + 1
maxc = 0
maxw = ""
for k in d:
    if d[k] > maxc and len(k) > 2:
        maxc = d[k]
        maxw = k
    if d[k] == maxc and len(k) > 2 and k > maxw:
        maxw = k
print(maxw)
f.close()

題目來源:

中國大學MOOC
Python語言程序設計 (第11期)
https://python123.io/index/courses/1521
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章