(點選上方公眾號,可快速關註一起學Python)
2016年開始人工智慧大資料的火熱引發了python學習的狂潮,也引發了全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)的註意,NCRE趕緊趁熱打鐵弄個python計算機二級考試,眾多網友一下子樂呵呵,總所周知python易學,面向物件和解釋性的特性讓程式設計不再困難,這幾天恰逢計算機等級考試,我從python123網站弄了一套模擬題給大家做做,說不定你們做完後,馬上端正態度摩拳擦掌躍躍欲試準備報考還說不定呢。
1. 關於資料的儲存結構,以下選項描述正確的是
A資料所佔的儲存空間量
B資料在計算機中的順序儲存方式
C資料的邏輯結構在計算機中的表示
D儲存在外存中的資料
正確答案: C
2. 關於線性連結串列的描述,以下選項中正確的是
A儲存空間不一定連續,且前件元素一定儲存在後件元素的前面
B儲存空間必須連續,且前件元素一定儲存在後件元素的前面
C儲存空間必須連續,且各元素的儲存順序是任意的
D儲存空間不一定連續,且各元素的儲存順序是任意的
正確答案: D
3. 在深度為 7 的滿二叉樹中,葉子結點的總個數是
A 31
B 64
C 63
D 32
正確答案: B
4. 關於結構化程式設計所要求的基本結構,以下選項中描述錯誤的是
A 重覆(迴圈)結構
B 選擇(分支)結構
C goto跳轉
D 順序結構
正確答案: C
5. 關於面向物件的繼承,以下選項中描述正確的是
A 繼承是指一組物件所具有的相似性質
B 繼承是指類之間共享屬性和操作的機制
C 繼承是指各物件之間的共同性質
D 繼承是指一個物件具有另一個物件的性質
正確答案: B
6. 關於軟體危機,以下選項中描述錯誤的是
A 軟體成本不斷提高
B 軟體質量難以控制
C 軟體過程不規範
D 軟體開發生產率低
正確答案: C
軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象
7. 關於軟體測試,以下選項中描述正確的是
A 軟體測試的主要目的是確定程式中錯誤的位置
B 為了提高軟體測試的效率,最好由程式編製者自己來完成軟體的測試工作
C 軟體測試是證明軟體沒有錯誤
D 軟體測試的主要目的是發現程式中的錯誤
正確答案: D
8. 以下選項中用樹形結構表示物體之間聯絡的模型是
A 網狀模型
B 層次模型
C 靜態模型
D 關係模型
正確答案: B
9. 設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程(課號,課程名),選課SC(學號,課號,成績),表SC的關鍵字(鍵或碼)是
A 學號,成績
B 學號,課號
C 學號,姓名,成績
D 課號,成績
正確答案: B
10.設有如下關係表:
以下選項中正確地描述了關係表 R、S、T 之間關係的是
A T=R∪S
B T=R×S
C T=R–S
D T=R∩S
正確答案: C
11. 關於 Python 程式格式框架的描述,以下選項中錯誤的是
A Python 語言的縮排可以採用 Tab 鍵實現
B Python 單層縮排程式碼屬於之前最鄰近的一行非縮排程式碼,多層縮排程式碼根據縮排關係決定所屬範圍
C 判斷、迴圈、函式等語法形式能夠透過縮排包含一批 Python 程式碼,進而表達對應的語意
D Python 語言不採用嚴格的“縮排”來表明程式的格式框架
正確答案: D
12. 以下選項中不符合 Python 語言變數命名規則的是
A I
B 3_1
C _AI
D TempStr
正確答案: B
13. 以下關於 Python 字串的描述中,錯誤的是
A 字串是字元的序列,可以按照單個字元或者字元片段進行索引
B 字串包括兩種序號體系:正向遞增和反向遞減
C Python 字串提供區間訪問方式,採用 [N:M] 格式,表示字串中從 N 到 M 的索引子字串(包含 N 和 M)
D 字串是用一對雙引號“”或者單引號‘ ‘括起來的零個或者多個字元
正確答案: C
14. 關於 Python 語言的註釋,以下選項中描述錯誤的是
A Python 語言的單行註釋以#開頭
B Python 語言的單行註釋以單引號 ‘ 開頭
C Python 語言的多行註釋以 ‘ ‘ ‘(三個單引號)開頭和結尾
D Python 語言有兩種註釋方式:單行註釋和多行註釋
正確答案: B
15. 關於 import 取用,以下選項中描述錯誤的是
A 使用 import turtle 引入turtle 庫
B 可以使用 from turtleimport setup 引入 turtle 庫
C 使用 import turtle as t引入 turtle 庫,取別名為 t
D import 保留字用於匯入模組或者模組中的物件
正確答案: B
16. 下麵程式碼的輸出結果是
x = 12.34
print(type(x))
A
B
C
D
正確答案: B
17. 關於 Python 的複數型別,以下選項中描述錯誤的是
A 複數的虛數部分透過字尾“J”或者“j”來表示
B 對於複數 z,可以用 z.real 獲得它的實數部分
C 對於複數 z,可以用 z.imag 獲得它的實數部分
D 複數型別表示數學中的複數
正確答案: C
18. 關於 Python 字串,以下選項中描述錯誤的是
A 可以使用 datatype() 測試字串的型別
B 輸出帶有引號的字串,可以使用跳脫字元\
C 字串是一個字元序列,字串中的編號叫“索引”
D 字串可以儲存在變數中,也可以單獨存在
正確答案: A
19. 關於 Python 的分支結構,以下選項中描述錯誤的是
A 分支結構使用 if 保留字
B Python 中 if-else 陳述句用來形成二分支結構
C Python 中 if-elif-else 陳述句描述多分支結構
D 分支結構可以向已經執行過的陳述句部分跳轉
正確答案: D
20. 關於程式的異常處理,以下選項中描述錯誤的是
A 程式異常發生經過妥善處理可以繼續執行
B 異常陳述句可以與 else 和 finally 保留字配合使用
C 程式語言中的異常和錯誤是完全相同的概念
D Python 透過 try、except 等保留字提供異常處理功能
正確答案: C
21. 關於函式,以下選項中描述錯誤的是
A 函式能完成特定的功能,對函式的使用不需要瞭解函式內部實現原理,只要瞭解函式的輸入輸出方式即可。
B 使用函式的主要目的是減低程式設計難度和程式碼重用
C Python 使用 del 保留字定義一個函式
D 函式是一段具有特定功能的、可重用的陳述句組
正確答案: C
22. 關於 Python 組合資料型別,以下選項中描述錯誤的是
A 組合資料型別可以分為 3 類:序列型別、集合型別和對映型別
B 序列型別是二維元素向量,元素之間存在先後關係,透過序號訪問
C Python 的 str、tuple 和 list 型別都屬於序列型別
D Python 組合資料型別能夠將多個同型別或不同型別的資料組織起來,透過單一的表示使資料操作更有序、更容易
正確答案: B
23. 關於 Python 序列型別的通用運運算元和函式,以下選項中描述錯誤的是
A 如果 x 不是 s 的元素,x not ins 傳回 True
B 如果 s 是一個序列,s =[1,”kate”,True],s[3] 傳回 True
C 如果 s 是一個序列,s =[1,”kate”,True],s[–1] 傳回 True
D 如果 x 是 s 的元素,x in s 傳回 True
正確答案: B
24. 關於 Python 對檔案的處理,以下選項中描述錯誤的是
A Python 透過直譯器內建的 open() 函式開啟一個檔案
B 當檔案以文字方式開啟時,讀寫按照位元組流方式
C 檔案使用結束後要用 close() 方法關閉,釋放檔案的使用授權
D Python 能夠以文字和二進位制兩種方式處理檔案
正確答案: B
25. 以下選項中不是 Python 對檔案的寫操作方法的是
A writelines
B write 和 seek
C writetext
D write
正確答案: C
26. 關於資料組織的維度,以下選項中描述錯誤的是
A 一維資料採用線性方式組織,對應於數學中的陣列和集合等概念
B 二維資料採用表格方式組織,對應於數學中的矩陣
C 高維資料有鍵值對型別的資料構成,採用物件方式組織
D 資料組織存在維度,字典型別用於表示一維和二維資料
正確答案: D
27. 以下選項中不是 Python 語言的保留字的是
A except
B do
C pass
D while
正確答案: B
28. 以下選項中是 Python 中文分詞的第三方庫的是
A jieba
B itchat
C time
D turtle
正確答案: A
29. 以下選項中使 Python 指令碼程式轉變為可執行程式的第三方庫的是
A pygame
B PyQt5
C PyInstaller
D random
正確答案: C
30. 以下選項中不是 Python 資料分析的第三方庫的是
A numpy
B scipy
C pandas
D requests
正確答案: D
31.下麵程式碼的輸出結果是
x = 0o1010
print(x)
A 520
B 1024
C 32768
D 10
正確答案: A
32.下麵程式碼的輸出結果是
x=10
y=3
print(divmod(x,y))
A (1, 3)
B 3,1
C 1,3
D (3, 1)
正確答案: D
divmod(x, y, /)
Return the tuple(x//y, x%y). Invariant: div*y + mod ==x.
33. 下麵程式碼的輸出結果是
for s in“HelloWorld”:
if s==“W”:
continue
print(s,end=“”)
A Hello
B World
C HelloWorld
D Helloorld
正確答案: D
34.給出如下程式碼:
DictColor ={“seashell”:“海貝色”,“gold”:“金色”,“pink”:“粉紅色”,“brown”:“棕色”, “purple”:“紫色”,“tomato”:“西紅柿色”}
以下選項中能輸出“海貝色”的是
A print(DictColor.keys())
B print(DictColor[“海貝色“])
C print(DictColor.values())
D print(DictColor[“seashell”])
正確答案: D
35. 下麵程式碼的輸出結果是
s =[“seashell”,“gold”,“pink”,“brown”,“purple”,“tomato”]
print(s[1:4:2])
A [‘gold’, ‘pink’, ‘brown’]
B [‘gold’, ‘pink’]
C [‘gold’, ‘pink’, ‘brown’, ‘purple’,’tomato’]
D [‘gold’, ‘brown’]
正確答案: D
36. 下麵程式碼的輸出結果是
d ={“大海”:“藍色”, “天空”:“灰色”, “大地”:“黑色”}
print(d[“大地”], d.get(“大地”, “黃色”))
A 黑的 灰色
B 黑色 黑色
C 黑色 藍色
D 黑色 黃色
正確答案: B
37. 當使用者輸入abc時,下麵程式碼的輸出結果是
try:
n = 0
n = input(“請輸入一個整數: “)
def pow10(n):
return n**10
except:
print(“程式執行錯誤”)
A 輸出:abc
B 程式沒有任何輸出
C 輸出:0
D 輸出:程式執行錯誤
正確答案: B
請仔細看程式碼,def定義後的函式並沒有執行,僅僅是幹擾
38.下麵程式碼的輸出結果是
a = [[1,2,3],[4,5,6], [7,8,9]]
s = 0
for c in a:
for j in range(3):
s += c[j]
print(s)
A 0
B 45
C 以上答案都不對
D 24
正確答案: B
39.檔案 book.txt 在當前程式所在目錄內,其內容是一段文字:book,下麵程式碼的輸出結果是
txt =open(“book.txt”, “r”)
print(txt)
txt.close()
A book.txt
B txt
C 以上答案都不對
D book
正確答案: C
列印文字檔案物件的時候絕對不是這樣的,而是類似於
<_io.textiowrapper name=”book.txt” mode=”r” encoding=”utf-8″/>
40.如果當前時間是 2018年5月1日10點10分9秒,則下麵程式碼的輸出結果是
import time
print(time.strftime(“%Y=%m-%d@%H>%M>%S”,time.gmtime()))
A 2018=05-01@10>10>09
B 2018=5-1 10>10>9
C True@True
D 2018=5-1@10>10>9
正確答案: A
關於time.strftime和time.gmtime的用法請看檔案。不會的看到Y,m,d之類的都基本上猜到是年月日啥的了
1.僅使用 Python 基本語法,即不使用任何模組,編寫 Python 程式計算下列數學運算式的結果並輸出,小數點後保留3位。
答案:
x=pow((3**4+5*6**7)/8),0.5)
print(round(x,3))
一看不能呼叫任何模組想必大家怕是慌了,但要記得高中數學老師講過x的0.5次方就是sqrt(x)嘛
2.以中國共產黨第十九次全國代表大會報告中一句話作為字串變數 s,完善 Python 程式,分別用 Python 內建函式及 jieba 庫中已有函式計算字串 s 的中文字元個數及中文詞語個數。註意,中文字元包含中文標點符號。(提交的程式碼應包括題目中給出的部分)
import jieba
s = “中國特色社會主義進入新時代,我國社會主要矛盾已經轉化為人民日益增長的美好生活需要和不平衡不充分的發展之間的矛盾。”
n = ____①____
m = ____②____
print(“中文字元數為{},中文詞語數為{}。”.format(n,m))
答案
1:len(s)
2:jieba.lcut(s)
題目要求求中文字元,有個問題就是不知道包不包括中文逗號句號,如果不包括的話就len(re.findall(‘[\u4e00-\u9fff]’,s)),但是隻能在要求的地方寫,而且不能匯入re庫
3.0x4DC0 是一個十六進位制數,它對應的 Unicode 編碼是中國古老的《易經》六十四卦的第一卦,請輸出第 51 卦(震卦)對應的 Unicode 編碼的二進位制、十進位制、八進位制和十六進位制格式。
print(“二進位制{____①____}、十進位制{____②____}、八進位制{____③____}、十六進位制{____④____}”.format(____⑤____))
答案:
print(“二進位制{0:b}、十進位制{0}、八進位制{0:o}、十六進位制{0:x}”.format(0x4DC0+50))
看到題目的format想必大家一下子慌了,我也是,格式化字串我都是懂%格式的,但查閱資料還是懂了,那為嘛不能填bin,oct,和hex呢。當然可以了,和答案執行一致也行
4.使用 turtle 庫的 turtle.fd() 函式和 turtle.seth() 函式繪製一個邊長為 200 的正方形,效果如下圖所示。請結合格式框架,補充橫線處程式碼。
import turtle
d = 0
for i in range(____①____):
turtle.fd(____②____)
d = ____③____
turtle.seth(d)
答案:
fd就是forward,seth就是setheading,turtle的函式要明白,如果學了turtle的同學可能認為這個過於簡單了,沒錯,我也這樣認為。
import turtle
d = 0
for i inrange(4):
turtle.fd(200)
d = d + 90
turtle.seth(d)
5.串列 ls 中儲存了我國 39 所 985 高校所對應的學校型別,請以這個串列為資料變數,完善 Python 程式碼,統計輸出各型別的數量。
ls = [“綜合”, “理工”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”,\
“師範”, “理工”, “綜合”, “理工”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”,“理工”,\
“理工”, “理工”, “理工”, “師範”, “綜合”, “農林”, “理工”, “綜合”, “理工”, “理工”, \
“理工”, “綜合”, “理工”, “綜合”, “綜合”, “理工”, “農林”, “民族”, “軍事”]
答案:
類似於詞頻統計的演演算法
ls = [“綜合”, “理工”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”, “綜合”, \
“綜合”, “綜合”, “師範”, “理工”, “綜合”, “理工”, “綜合”, “綜合”, \
“綜合”, “綜合”, “綜合”, “理工”, “理工”, “理工”, “理工”, “師範”, \
“綜合”, “農林”, “理工”, “綜合”, “理工”, “理工”, “理工”, “綜合”, \
“理工”, “綜合”, “綜合”, “理工”, “農林”, “民族”, “軍事”]
d = {}
for word in ls:
d[word] = d.get(word, 0) + 1
for k in d:
print(“{}:{}”.format(k, d[k]))
6.《論語》是儒家學派的經典著作之一,主要記錄了孔子及其弟子的言行。網路上有很多《論語》文字版本。這裡給出了一個版本,檔案名稱為“論語–網路版.txt”,其內容採用如下格式組織:
【原文】
1.11子曰:“父在,觀其(1)志;父沒,觀其行(2);三年(3)無改於父之道(4),可謂孝矣。”
【註釋】
(略)
【譯文】
(略)
【評析】
(略)
該版本透過【原文】標記《論語》原文內容,採用【註釋】、【譯文】和【評析】標記對原文的註釋、譯文和評析。
問題1:請編寫程式,提取《論語》檔案中所有原文內容,輸出儲存到“論語–提取版.txt”檔案。輸出檔案格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的數字標誌,行尾無空格、無空行。參考格式如下(原文中括號及內部數字是對應源檔案中註釋項的標記):
子曰(1):“學(2)而時習(3)之,不亦說(4)乎?有朋(5)自遠方來,不亦樂(6)乎?人不知(7),而不慍(8),不亦君子(9)乎?”
有子(1)曰:“其為人也孝弟(2),而好犯上者(3),鮮(4)矣;不好犯上,而好作亂者,未之有也(5)。君子務本(6),本立而道生(7)。孝弟也者,其為人之本與(8)?”
子曰:“巧言令色(1),鮮(2)仁矣。”
(略)
問題2:請編寫程式,在“論語–提取版.txt”基礎上,進一步去掉每行文字中所有括號及其內部數字,儲存為“論文–原文.txt”檔案。參考格式如下:
子曰:“學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知,而不慍,不亦君子乎?”
有子曰:“其為人也孝弟,而好犯上者,鮮矣;不好犯上,而好作亂者,未之有也。君子務本,本立而道生。孝弟也者,其為人之本與?”
子曰:巧言令色,鮮仁矣。”
參考答案:
不就是正則運算式處理這樣的文字嘛,首先分析文字結構,原文開頭就是【原文】,結束是【,然後去掉1.11和多餘的空行啊,空格啊之類的,第二個就是去掉(1)這樣的註釋就行,程式碼如下
import re
with open(‘論語-網路版.txt’,‘r’,encoding=‘utf-8’) as f:
b=f.read()
yuanwen=re.findall(‘(?<=【原文】)[\s\S]+?(?=【)’,b)
yw=[]
fori in yuanwen:
t=re.sub(‘\s’,”,i)
t=re.sub(‘\d{1,2}·\d{1,2}’,”,t)
yw.append(t)
tiqu=‘\n’.join(yw)
withopen(‘論語-提取版.txt’,‘w’,encoding=‘utf-8’) as f:
f.write(tiqu)
#第2小題
yuanw=re.sub(‘\(\d{1,2}\)’,”,tiqu)
with open(‘論語-原文.txt’,‘w’,encoding=‘utf-8’)as f:
f.write(yuanw)
結果一看參考答案,高,實在是高!參考答案沒有匯入re庫,全靠一行一行讀,和使用format,有興趣的同學們可以試一試
參考程式碼 1
fi= open(“論語-網路版.txt”, “r”, encoding=“utf-8”)
fo= open(“論語-提取版.txt”, “w”)
wflag= False #寫標記
forline in fi:
if “【” in line: #遇到【時,說明已經到了新的區域,寫標記置否
wflag = False
if “【原文】” in line: #遇到【原文】時,設定寫標記為True
wflag = True
continue
if wflag == True: #根據寫標記將當前行內容寫入新的檔案
for i in range(0,25):
for j in range(0,25):
line =line.replace(“{}•{}”.format(i,j),“**”)
for i in range(0,10):
line =line.replace(“*{}”.format(i),“”)
for i in range(0,10):
line =line.replace(“{}*”.format(i),“”)
line = line.replace(“*”,“”)
fo.write(line)
fi.close()
fo.close()
參考程式碼 2
fi= open(“論語-提取版.txt”, “r”)
fo= open(“論語-原文.txt”, “w”)
for line in fi: #逐行遍歷
for i in range(1,23): #對產生1到22數字
line=line.replace(“({})”.format(i), “”) #構造(i)並替換
fo.write(line)
fi.close()
fo.close()