计算机二级python经典真题
計算機二級python經(jīng)典考題
1、鍵盤輸入正整數(shù)n,按要求把n輸出到屏幕,格式要求:寬度為20個字符,減號字符,右填充,右對齊,帶千位分隔符。如果輸入正整數(shù)超過20位,則按照真實長度輸出
例如:鍵盤輸入正整數(shù)n為1234,屏幕輸出---------------1,234
n = eval(input("請輸入正整數(shù):")) print("{:->20,}".format(n))2、a和b是兩個列表變量,列表a為[3,6,9]已給定,鍵盤輸入列表b,計算a中元素與b中對應元素乘積的累加和。
例如:鍵盤輸入列表b為[1,2,3],累加和為1*3+2*6+3*9=42,因此,屏幕輸出計算結果為42
a = [3, 6, 9] b = eval(input("請輸入一個數(shù)組:")) s = 0 for i in range(len(a)):s += a[i] * b[i]; print(s)3、以123為隨機數(shù)種子,隨機生成10個在1(含)到999(含)之間的隨機數(shù),每個隨機數(shù)后跟隨——個逗號進行分隔,廳幕輸出這10個隨機數(shù)。
import random random.seed(123) for i in range(10):print(random.randint(1,999), end=",")4、使用turtle的 turtle.rght()函數(shù)和turtle.fd()函數(shù)繪制個菱形,邊長為200像素,4個內角度數(shù)為2個60度和2個120度,效果如圖所示
import turtleturtle.right(-30) turtle.fd(200) turtle.right(60) turtle.fd(200) turtle.right(120) turtle.fd(200) turtle.right(60) turtle.fd(200) turtle.right(120)4、鍵盤輸入一組人員的姓名、性別、年齡等信息,信息間采用空格分隔,每人一行,空行回車結束錄入,示例格式如下:
張三 男 23
李四 女 21
王五 男 18
計算并輸出這組人員的平均年齡(保留2位小數(shù))和其中男性人數(shù),格式如下:
平均年齡是20.67 男性人數(shù)是2
data = input() num = 0 age = 0 maleNum = 0 while data:num += 1infoArr = data.split(" ");age += int(infoArr[2])if infoArr[1] == "男":maleNum += 1data = input() age = age / num; print("平均年齡{:.2f} 男性人數(shù)是{}".format(age, maleNum))5、《命運》是著名科幻作家倪匡的作品。這里給出《命運》的一個網(wǎng)絡版本文件,文件名為“命運.txt”
問題1(5分): 對“命運.txt"文件進行字符頻次統(tǒng)計,輸出頻次最高的中文字符(不包含標點符號)及其頻次,字符與頻次之間采用英文冒
號”:"分隔,示例格式如下:
理:224
file = open("命運.txt", "r", encoding="utf-8") info = file.read() d = {} for s in info:if s not in ",。?《》!【】“”‘’、":d[s] = d.get(s, 0 ) + 1 arr = list(d.items()) arr.sort(key=lambda item:item[1], reverse=True) file.close() print("{}:{}".format(arr[0][0],arr[0][1]))問題2(5分): 對“命運.txt”文件進行字符頻次統(tǒng)計,按照頻次由高到低,屏幕輸出前10個頻次最高的字符,不包含回車符,字符之間無間
隔,連續(xù)輸出,示例格式如下:
理斯衛(wèi)…G后略,共10個字符)
file = open("命運.txt", "r", encoding="utf-8") info = file.read() d = {} for s in info:if s not in "\n":d[s] = d.get(s, 0) + 1 file.close() ls = list(d.items()) ls.sort(key=lambda item:item[1], reverse=True) for i in range(10):print("{}".format(ls[i][0]), end="")問題3(10分): 對“命運.txt”文件進行字符頻次統(tǒng)計,將所有字符按照頻次從高到低排序,字符包括中文、標點、英文等符號,但不包含
空格和回車。將排序后的字符及頻次輸出到考生文件夾下,文件名為"命運-頻次排序.txt”。字符與頻次之間采用英文冒號″:"分隔,各字符之間釆用英文逗號″,″分隔
理:224,斯:120,衛(wèi):100
file1 = open("命運.txt", "r", encoding="utf-8") file2 = open("命運-頻次排序.txt", "w", encoding="utf-8") info = file1.read() d = {} for s in info:if s not in "\n\t":d[s] = d.get(s, 0) + 1 ls = list(d.items()) ls.sort(key=lambda item:item[1], reverse=True) data = "" for item in ls:data += str(item[0])+":"+str(item[1])+"," data = data[0:len(data)-1:1] file2.write(data) file1.close() file2.close() 在敘述《命運》這個故事之前,先說說命運。甚么?《命運》不是說命運的嗎?“命運”是這個故事的題名,可以說命運,和命運有關的種種;也可以不是。究竟《命運》說的是甚么樣的故事?還是那句老話:看下去,自然知道。不論怎樣,先來說說命運。世界上,宇宙間,奇妙的事雖然多到不可勝算,但是決不會比命運更奇妙。命運存在嗎?彷佛又虛無縹緲,不可捉摸。命運不存在嗎?卻又彷佛世上所有的人,都受著命運的左右。(不但人受命運的左右,所有的生物,有生命的,也都有“命運”。甚至沒有生命的物質,也有它們的命運,每一種生物或物質,都有命運在播弄。)任何人最關心的,當然是自己的命運,尤其是想解答一個問題:我將來會怎么樣?也就是說,人最關心的,是自己將來的命運。將來會怎么樣呢?在生命歷程中,會發(fā)生甚么事?是不是可以通過某種方法,預先知道自己的生命歷程中將來的事?這是第一層次的問題群,這一連串的問題,答案也很難確定。若說沒有,古今中外,不知有多少方法傳下來,可以推算一個人的未來命運,單是在古老的中國,方法之多,層出不窮,有看相(面相、手相、身相、骨相等等)、有排八字(根據(jù)一個人的出生時刻推算未來),還有各種各樣的推算法、占卜求簽,大方法中變出各種小方法,真要統(tǒng)計一下,子平、紫微、梅花神數(shù)……至少可以數(shù)出一百種以上。方法是有的,這一點可以肯定。有的方法且十分復雜,不但需要相當高深的學識,而且也需要玄學上的靈感和才能,有的方法十分秘密,不是諳此術者,根本不能窺其門徑,連邊都沾不到。但是問題又來了,根據(jù)這一切方法,推算出來的未來命運,準嗎?算出來如此就如此?于是,問題群進入了第二層次。未來的事,就是還未曾發(fā)生的事。一件事,不論多么簡單,那都是表面現(xiàn)象。事實上,一件再簡單的事,都極復雜,和千千萬萬的因素有關,千千萬萬的因素,結合起來,才產生一件簡單之極的事情。舉一個例子:走進快餐店,買一只漢堡包,把這只漢堡包吃下肚子去,那是多么平常簡單的一件事!每天都不知有多少人在做,很少有人從那么簡單的事情中,去深一層想想這其實是多么復雜的一件事。漢堡包用面粉制成,面粉是由甚么人制造出來?麥子是在甚么樣的情形之下種出來?牛肉的來源又怎么樣?洋蔥自然來自農田,但如果恰有一只害蟲,蛀蝕了那只洋蔥,自然會被拋掉,當然你還可以吃到一只漢堡包,但也已經(jīng)不是那一只了,有了微小的不同。微小的不同,就是有變化,必須承認這一點。也就是說,這只漢堡包,到你的口中,是上億個因素結合起來形成,只要其中一個因素不同,整件事就不同了,雖然同與不同之間,相差可能極微,但不同就是不同!再舉一個例子,若干年前,在香港的半山區(qū),在一個暴風雨之夜,山泥崩瀉,以驚人的破壞力,把一幢十二層高的大廈,徹底摧毀,造成了巨大的災害,有不少人,慘被埋在倒坍了的大廈和崩瀉的山泥之中,喪失了生命。不幸罹難的人,自然命運差極。但是也有很幸運地逃過了巨災的人在。逃過了災劫的人,看來是不應該逃過的,而不幸死亡的人,其實應該是可以逃得過的。兩個小故事,可以使關心自己未來命運的人感到興趣,看了之后,也可以好好想一想。第一個是遭了難的:一位年輕人,約了女朋友外出,可是臨時,由于風雨實在太大,就臨時取消了約會,逗留在家里。結果,大廈傾坍,遭了不幸。他推辭約會之前,一定曾考慮過,當時外出還是不外出,決定于一念之間,而一念之間,就決定了他的一生命運。因素也不是在他一個人那方面,若是他的女朋友堅持一下,也就可以影響他的決定,那么,他未來的命運,就又是另外一回事了。暴風雨不可測,形成一場暴風雨,不知有多少因素,自然的因素,再加上人的因素,種種因素湊合起來:就是那么巧。第二個故事的主角,是一個幸運的少婦。這位少婦當時正有孕在身,在暴風雨之夜,忽然想起要吃某種食品(據(jù)說是一種面包),于是就駕車離家,去購買這種面包。當她冒著風雨,買了面包,再駕車回去時,整座大廈已經(jīng)消失,而她雖然震愕絕倫,卻也逃過了被壓死的噩運。她決定是不是要冒著風雨去買面包,一定也曾考慮過,而決定去還是不去,也只不過是一念之間的事,可就是這一念之間,決定了她一生未來的命運?;蛟S有一句老話可以套用:“命不該絕”。這是承認命運存在的說法,說起來相當玄:命不該絕的,自然會在一念之間,決定外出,命里該絕的,就會留下來。但是,為甚么呢?沒有答案,有,也還是一句老話:命里注定。這種命里注定的說法,忽略了眾多因素的存在,是一種太過簡單的說法。像那位少婦,她忽然想起了要吃某種食物,自然是因為她懷孕,那是孕婦某種生活上的特徵之一。如果她未曾懷孕?自然一切都改變了,而就算是生理正常的男女,懷孕也是一個復雜無比的過程,她恰好懷孕了,命運就不同,如果她沒有懷孕,自然又不同。所謂前因后果,前因有千千萬萬,恰好是那樣,才有那樣的結果,前因稍有一項變動,結果就不同。所以在理論上說,要藉不論是哪一種方法,推算未來的命運,都必須把所有的前因,全部正確無誤地推算出來,才能達到唯一的正確結果。前因既然牽涉的范圍如此之廣,有可能一一了解清楚嗎?更何況每一個前因的形成,又有上億的形成這個前因的因素在,牽扯開去,若用數(shù)值來表示,簡直就是無窮大,實在無法計算——那便在理論上,也無法確立可以計算的可能!好了,就算有某種方法,真可以囊括一切,推算未來;或者,像我在《天書》中記述的那樣,地球上在進行的一切,只不過是一種“鏡子反射”,早已在遙遠的其他地方發(fā)生過的,那自然也可以藉著早已發(fā)生過的紀錄,來知道將來發(fā)生的事。好了,就算未來命運真可以推算出來,那又怎么樣?接下來的,自然進入了問題的第三層次。那就是:知道了未來的命運,能改變嗎?若是不能改變,知道了又怎么樣?再用上面那兩個例子,那位青年,若是通過了某種方法,早已知道他會在傾坍的大廈中被壓死,他自然不會再在那晚上留在家中,誰也不會明知要壓死而還留在那里等死。所以,他會離開。所以,大廈傾坍時,他不會被壓死。結果是:他沒有死在那次災難之中。那么,就是推算不準確了,因為推算,算到他要死在那次災難之中。這是一個相當有趣的邏輯問題:如果算出來的結果可以改變,那么算出來的結果,就絕不準確,不但不準確,而在大多數(shù)的情形之下,還會截然相反。而如果推算出來的結果準確無誤,那就不會更改,不能變動。然而,那就是對一個已知道了自己未來命運的人最痛苦的煎熬。在《叢林之神》這個故事中,就曾對一個有預知能力的人的痛苦,作了一句傳神的描寫:“生活就像是在看一張翻來覆去、不知看了多少遍的舊報紙,乏味到了極點!”既然,預知未來命運,只有兩個可能:(一)不準確!(二)準確,但痛苦莫名。那么,為甚么還是有那么多人,幾乎是所有人,都那么焦急地想知道自己的將來。將來終歸會來,任何人,走完自己的生命歷程,都可以清清楚楚知道有甚么事曾發(fā)生。但是,所有人,古代的、現(xiàn)代的,焦急地要提早知道。關于人的未來命運,是否可知,大體上的情形,就如上述。我記述的故事,很少有那么長的前言。這洋洋數(shù)千字的前言,是我一次和若干大學生的談話:受過高等現(xiàn)代教育的年輕人,對玄學上的事發(fā)生興趣,想聽聽我的意見,所以才有了這一次談話。當時所舉的例子還要多,但現(xiàn)在為了急于記述《命運》這個故事,所以從略。那次談話結束,有一位青年問:“那么,衛(wèi)斯理先生,你的結論是甚么呢?”我的回答,可能不能使發(fā)問者感到滿意,但是那是我唯一的答案。我的答案是:“我沒有結論。我的意見已經(jīng)簡單地表達了出來,大家也不能在我的意見之中,得出任何的結論。”那位青年又道:“那么——“我打斷了他的話頭:“是的,那么,甚么是命運,命運是怎么一回事,我沒有結論。”談話結束之后不多幾天,就開始發(fā)生了我如今名之為《命運》,要記述下來的那個故事。以下,才真正是《命運》的開始。6、隨機選擇—個手機品牌屏幕輸出。
import random brandlist = ['華為', '蘋果', '諾基亞', 'OPPO', '小米'] random.seed(0) name = brandlist[random.randint(0, len(brandlist))] print(name)7、請寫代碼替換橫線,鍵盤輸入一段文本,保存在一個字符串變量s中,分別用Python內置函數(shù)及jieba庫中已有函數(shù)計算字符串s
的中文字符個數(shù)及中文詞語個數(shù)。注意中文字符包含中文標點符號
例如,鍵盤輸入:
俄羅斯舉辦世界杯
屏幕輸出:
中文字符數(shù)為8,中文詞語數(shù)為3
import jieba s = input("請輸入一個字符串:") n = len(s) m = len(jieba.lcut(s)) print("中文字符數(shù)為:{},中文詞數(shù)為:{}".format(n,m))8、某商店出售某品牌運動鞋,每雙定價160,1雙不打折,2雙(含)到4雙(含)打九折,5雙(含)到9雙(含)打八折,10雙(含)以上打七折,鍵盤輸入購買數(shù)量,屏幕輸出總額(保留整數(shù))。示例格式如下
輸入:1
輸出:總額為:160
n = eval(input("請輸入數(shù)量:")) cost=0; if n == 1:cost = 160 elif n >= 2 or n <= 4:cost = int(n * 160 * 0.9) elif n >= 5 or n <= 9:cost = int(n * 160 * 0.8) elif n >= 10:const = int(n * 160 * 0.7) print("總額為:", cost)9、鍵盤輸入某班各個同學就業(yè)的行業(yè)名稱,行業(yè)名稱之間用空格間隔(回車結束輸入)。完善 Python代碼,統(tǒng)計各行業(yè)就業(yè)的學生數(shù)量按數(shù)量從高到低方式輸出。
例如輸入:交通 金融 計算機 交通 計算機 計算機
輸出參考格式如下,其中冒號為英文冒號:
計算機:3
交通:2
金融:1
names = input("請輸入各個同學行業(yè)名稱,行業(yè)名稱之間用空格間隔:") nameArr = names.split(" ") d = {} for item in nameArr:d[item] = d.get(item, 0) + 1 ls = list(d.items()) ls.sort(key= lambda item:item[1], reverse=True) for k in ls:print("{}:{}".format(k[0], k[1]))10、下面所示為一套由公司職員隨身佩戴的位置傳感器采集的數(shù)據(jù),文件名稱為 sensor.txt,其內容示例如下
2016/5/3 10:05, vawelon001,1,1
2016/5/3 10:20, earpa001,1,1
2016/5/3 12:26, earpa001,1,6
…略
第一列是傳感器獲取數(shù)據(jù)的時間,第二列是傳感器的編號,第三列是傳感器所在的樓層,第四列是傳感器所在的位置區(qū)域編號。
問題1(10分):修改代碼,讀入 sensor.txt文件中的數(shù)據(jù),提取出傳感器編號為 earpa00的所有數(shù)據(jù),將結果輸出保存到"arpa001.txt"文件。輸出文件格式要求:原數(shù)據(jù)文件中的每行記錄寫入新文件中,行尾無空格,無空行。參考格式如下:
2016/5/3 17:11, arpa001,2,4
2016/5/3 18:02, arpa001,3,4
2016/5/3 1922, earp001,3,4
file = open("sensor.txt", "r", encoding="utf-8") fo = open("arpa001.txt", "w", encoding="utf-8") lines = file.readlines() for line in lines:if "arpa00" not in line:continueline = line.replace("\n", "")lineArr = line.split(',')fo.write('{},{},{},{}\n'.format(lineArr[0],lineArr[1],lineArr[2],lineArr[3])) fo.close() file.close()問題2(10分)在PY301-2.py文件中修改代碼,讀入" arpa001.txt文件中的數(shù)據(jù),統(tǒng)計 arpa001對應的職員在各樓層和區(qū)域出現(xiàn)的次數(shù),保存到"eapa001_count.txt"文件,每條記錄一-行,位置信息和出現(xiàn)的次數(shù)之間用英文半角逗號隔開,行尾無空格,無空行。參考格式如下。
1-1,5
1-4,3
含義如下:
第1行“1-1,5"中1-1表示1樓1號區(qū)域,5表示出現(xiàn)5次
第2行“1-4,3"中1-4表示1樓4號區(qū)域,3表示出現(xiàn)3次
11、從鍵盤輸入4個數(shù)字,各數(shù)字采用空格分隔,對應為變量x0,y0,x1,y1。計算兩點(x0,y0)和(x1,y1)之間的距離,屏幕輸出這個距離,保留2位小數(shù)
例如:鍵盤輸入: 0 1 3 5
屏幕輸出: 500
ntxt = input("請輸入4個數(shù)字(空格分隔):") nls = ntxt.split(" ") x0 = eval(nls[0]) y0 = eval(nls[1]) x1 = eval(nls[2]) y1 = eval(nls[3]) r = pow(pow(x1-x0, 2) + pow(y1-y0, 2), 0.5) print("{:.2f}".format(r))12、鍵盤輸入一段中文文本,不含標點符號和空格,命名為變量s,采用jieba庫對其進行分詞,輸出該文本中詞語的平均長度,保留1位小數(shù)
例如:鍵盤輸入:吃葡萄不吐葡萄皮
屏幕輸出:1.6
import jieba txt = input("請輸入一段文本:") ls = jieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)))13、鍵盤輸入一個9800到9811之間的正整數(shù)n,作為 Unicode編碼,把n-1、n和n+1三個 Unicode編碼對應字符按照如下格式要求輸出到屏幕:寬度為11個字符,加號字符+填充,居中。
例如:鍵盤輸入:9802
屏幕輸出:++++???++++
14、使用 turtle庫的 turtle fd0函數(shù)和 turtle. seth0函數(shù)繪制個每方向為100像素長度的十字形,效果如圖所示
import turtle for i in range(4):turtle.fd(100)turtle.fd(-100)turtle.seth((i+1)*90)15、鍵盤輸入一組我國高校所對應的學校類型,以空格分隔,共一行,示例格式如下
綜合 理工 綜合 綜合 綜合 師范 理工
統(tǒng)計各類型的數(shù)量,從數(shù)量多到少的順序屏幕輸出類型及對應數(shù)量,以英文冒號分隔,每個類型一行,輸出參考格式如下
綜合:4
理工:2
師范:1
`
txt = input("請輸入類型序列:") txtArr = txt.split(" ") d = {} for item in txtArr:d[item] = d.get(item, 0) + 1 ls = list(d.items()) ls.sort(key=lambda item:item[1], reverse=True) for k in ls:print("{}:{}".format(k[0], k[1]))16、《論語》是儒家學派的經(jīng)典著作之一,主要記錄了孔子及其弟子言行。這里給出了—個網(wǎng)絡版本的《論語》,文件名稱為“論語.txt”,其內容采用逐句“原文”與逐句“注釋”相結合的形式組織,通過【原文】標記《論語》原文內容,通過【注釋】標記《論語》注釋內容,具體文件格式框架請參考“論語.txt”文件。
問題1(10分):提取“論語txt”文件中的原文內容,輸出保存到考生文件夾下,文件名為“論語-原文.txt”。具體要求:僅保留“論語.txt”文件中所有【原文】標簽下面的內容,不保留標簽,并去掉每行行首空格及行尾空格,無空行。原文小括號及內部數(shù)字是源文件中注釋項的標記,請保留。
fi = open("論語.txt","r",encoding="utf-8") fo = open("論語-原文.txt", "w", encoding="utf-8") flag = False for line in fi:if "【原文】" in line:flag = Truecontinueif "【注釋】" in line:flag = Falseline = line.strip("\n")line = line.lstrip().rstrip()if flag:print(line)if line:fo.write(line+"\n") fo.close() fi.close()問題2(10分):對“論語-原文.txt”或“論語.txt”文件進一步提純,去掉每行文字中所有小括號及內部數(shù)字,保存為“論文-提純原文.txt”文件。
fi = open("論語-原文.txt", "r", encoding="utf-8") fo = open("論語-原文提純.txt", "w", encoding="utf-8") for line in fi:for i in range(10):line = line.replace("("+str(i)+")", "")fo.write(line) fo.close() fi.close()in line:
flag = True
continue
if “【注釋】” in line:
flag = False
line = line.strip("\n")
line = line.lstrip().rstrip()
if flag:
print(line)
if line:
fo.write(line+"\n")
fo.close()
fi.close()
總結
以上是生活随笔為你收集整理的计算机二级python经典真题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 忙的日子
- 下一篇: r语言 python 股票_如何用R语言