python 二級考試操作題(一)


一、參照代碼模板完善代碼,實現下述功能。從鍵盤輸入一個整數和一個字符,以逗號隔開,在屏幕上顯示輸出一條信息。

示例如下:

輸入

10,@

輸出

@@@@@@@@@@ 10 @@@@@@@@@@

 

輸入輸出示例

 

輸入

輸出

示例 1

10,@

@@@@@@@@@@ 10 @@@@@@@@@@

參考答案:

1 a,x = input().split(',') # 請輸入1個整數和1個符號,逗號隔開
2 print(x*eval(a),a,x*eval(a))
View Code

 

要點:

1. 輸入兩個值組成的字符串,要用split()分割開

2.同時賦值給兩個變量

3.利用eval得到數值做運算,給字符做乘法,得到需要的格式

 

 

二、參照代碼模板完善代碼,實現下述功能。從鍵盤輸入一個由 1 和 0 組成的二進制字符串 s,轉換為八進制數輸出顯示在屏幕上,示例如下:

輸入:

1100

輸出:

轉換成八進制數是:14

 

輸入輸出示例

 

輸入

輸出

示例 1

1100

14

參考答案:

1 s = input() # 請輸入一個由1和0組成的二進制數字串
2 d = 0
3 while s:
4     d = d*2 + (ord(s[0]) -ord('0'))
5     s = s[1:]
6 print("轉換成八進制數是:{:o}".format(d))
7  
View Code

要點:

1.print和format的格式用法,字符串的內置處理函數,切片

2.理解數據類型及其轉換

 

 

三、參照代碼模板完善代碼,實現下述功能。文件 data.txt 文件中有多行數據,打開文件,讀取數據,並將其轉化為列表。統計讀取的數據,計算每一行的總和、平均值,在屏幕上輸出結果。

文件內容示例如下:

Chinese: 80,Math:85,English:92, Physical: 81,Art:85,Chemical:88

屏幕輸出結果示例如下:

總和是:511.0,平均值是:85.17

 

 

輸入輸出示例

 

輸入

輸出

示例 1

從文件 data.txt 中讀取

總和是:511.0,平均值是:85.17

參考答案:

 1 fi = open("data.txt", 'r')
 2 for l in fi:
 3     l = l.split(',')
 4     s = 0.0
 5     n = len(l)
 6     for cours in l:
 7         items  = cours.split(':')
 8         s += eval(items[1])
 9     print("總和是:{},平均值是:{:.2f}".format(s,s/n))
10 fi.close()
View Code

 

四、參照代碼模板完善代碼,實現下述功能,不得修改其它代碼。使用 turtle 庫的 turtle.circle() 函數

和 turtle.seth() 函數繪制同心圓套圈,最小的圓圈半徑為 10 像素,不同圓圈之間的半徑差是 40 像素,效果如下圖所示。

 

 

 參考答案:

 1 import turtle
 2 r = 10
 3 dr = 40
 4 head = 90
 5 for i  in range (4):
 6     turtle.pendown()
 7     turtle.circle(r)
 8     r +=  dr
 9     turtle.penup()
10     turtle.seth(-head)
11     turtle.fd(dr)
12     turtle.seth(0)
13 turtle.done()
View Code

 要點:

1. 同心圓主要問題是要挪動畫筆,用到 pendown 和 penup

2. 用循環來處理重畫的個數

 

 

五、參照代碼模板完善代碼,實現下述功能。從鍵盤輸入一個中文字符串變量 s,內部包含中文標點符號。

 

問題1:(8分)用 jieba 分詞,計算字符串 s 中的中文詞匯個數,不包括中文標點符號。顯示輸出分詞后的結果,用”/ ”分隔,以及中文詞匯個數。示例如下:

 

輸入:

工業互聯網”實施的方式是通過通信、控制和計算技術的交叉應用,建造一個信息物理系統,促進物理系統和數字系統的融合。

輸出:

工業/ 互聯網/實施/ 的/ 方式/是/ 通過/ 通信/控制/ 和/ 計算技術/的/ 交叉/ 應用/建造/ 一個/ 信息/物理/ 系統/ 促進/物理/ 系統/ 和/數字/ 系統/ 的/融合/

中文詞語數是:27

 

問題2:(7分)在問題1的基礎上,統計分詞后的詞匯出現的次數,用字典結構保存。顯示輸出每個詞匯出現的次數,以及出現次數最多的詞匯。如果有多個詞匯出現次數一樣多,都要顯示出來。示例如下:

繼續輸出:

控制: 1

物理: 2

通信: 1

交叉: 1

互聯網: 1

和: 2

是: 1

計算技術: 1

一個: 1

的: 3

數字: 1

促進: 1

信息: 1

方式: 1

建造: 1

應用: 1

系統: 3

通過: 1

實施: 1

融合: 1

工業: 1

出現最多的詞是(的 系統):3 次

 

輸入輸出示例

 

輸入

輸出

問題 1

工業互聯網”實施的方式是通過通信、控制和計算技術的交叉應用,建造一個信息物理系統,促進物理系統和數字系統的融合。

中文詞語數是:27

問題2

 

控制: 1

物理: 2

通信: 1

交叉: 1

互聯網: 1

和: 2

是: 1

計算技術: 1

一個: 1

的: 3

數字: 1

促進: 1

信息: 1

方式: 1

建造: 1

應用: 1

系統: 3

通過: 1

實施: 1

融合: 1

工業: 1

出現最多的詞是(的 系統):3 次

參考答案1:

 1 import jieba
 2 #問題一
 3 #s = “工業互聯網”實施的方式是通過通信、控制和計算技術的交叉應用,
 4 #建造一個信息物理系統,促進物理系統和數字系統的融合。”
 5 
 6 s = input("請輸入一段中文,可以有標點:")
 7 ls = jieba.lcut(s)
 8 sym = ",。:;“”、!"
 9 for each in ls:
10     if each in sym:
11         ls.remove(each)
12         #剔除中文標點符號
13 str_to_output= "/".join(ls)
14 print(str_to_output)
15 print("中文詞語數是:%d\n\n" % len(ls))
16 
17 
18 print("--------我是兩個問題的分割線------------\n\n")
19 
20 
21 
22 #問題二
23 d = {}
24 for each in ls:
25     d[each] = d.get(each, 0) + 1
26 for key in d:
27     print("{}:{}".format(key,d[key]))
28 max = 0
29 lss = []
30 #尋找出現最多的次數
31 for key in d:
32     if max < d[key]:
33         max = d[key]
34         
35 #把出現最多的詞語放在lss列表里       
36 for key in d:
37     if max == d[key]:
38        lss.append(key)
39 
40 str_to_output= " ".join(lss)
41 
42 print("出現最多的詞是({}):{}次".format(str_to_output,max))
View Code

參考答案2:

 1 import jieba
 2 # s = '“工業互聯網”實施的方式是通過通信、控制和計算技術的交叉應用,建造一個信息物理系統,促進物理系統和數字系統的融合。'
 3 s = input("請輸入一個中文字符串,包含逗號和句號:")
 4 s = s.replace('','').replace('','').replace('','').replace('','').replace('','')
 5 k=jieba.lcut(s)
 6 d1 = {}
 7 maxc = 0
 8 wo = ''
 9 for i in k:
10    print(i, end= "/ ")
11    d1[i] = d1.get(i,0) + 1
12 print("\n中文詞語數是:{}".format(len(k)))
13 for key in d1:
14     if maxc < d1[key]:
15         wo = key
16         maxc = d1[key]
17     elif maxc == d1[key]:
18         wo += ' ' + key
19     print("{}: {}".format(key,d1[key]))
20 print("出現最多的詞是({}):{} 次".format(wo, maxc))
View Code

要點:

1. 用 jieba 分詞處理詞匯統計

2. 要處理掉輸入的各種標點符號,用到replace()

3. 用字典保存各個詞出現次數

4. 要遍歷字典的鍵值對,找到最大的值,及其對應的鍵

 

六、一個人臉識別研究小組對若干名學生做了人臉識別的測試,將測試結果與被測試者的現場照片組合成文件名,寫到了一個文件 dir_100.txt 中,每行是一個文件名的信息,示例如下:

['1709020621', '0']_116.jpg

['1709020621']_115.jpg

['1770603107', '1770603105', '0', '0']_1273.jpg

文件名各部分含義如下:

[‘識別出學號1’,‘ 識別出學號2’,…,‘0表示檢測到人臉但未識別出人’]_照片的順序編號.jpg

測試過程中,一個學生可能被抓拍到多張照片中,所以會在多個文件名中被識別,學號出現在多個文件名中;一張照片中,可能有多個人臉,但有些分辨率不夠而識別不出來,文件名位置用‘0’代替學號。

使用字典和列表型變量進行數據分析,最終獲取實際參加測試的學生人數和人均被測次數。

(1)讀入 dir_300.txt 文件的內容,處理每一行文件名信息。將文件名中的學號內容以列表形式保存,丟掉‘0’的字串;照片的順序編號作為字典的關鍵字,學號列表作為字典的值。轉換后,顯示字典中的每行信息,示例如下:

116:1709020621

115:1709020621

117:1709020621

1273: 1770603107,1770603105

 

(2)將該字典中的學號提取出來,構造另一個字典,以學號作為字典的關鍵字,累計學號出現的次數,將累計值作為字典的值。格式示例如下:

1709020621:3

1770603107:1

1770603105:1

(3)累計字典中關鍵字的個數,即為實際參加測試的學生人數;累加每個關鍵字對應的值,即為所有學號測試次數;與實際測試人數之比,即為人均被測次數。將實際參加測試人數和人均被測次數顯示輸出在屏幕上,示例如下:

實際參加測試的人數是:1024

人均被測次數是:2.7

 

輸入輸出示例

 

輸入

輸出

問題 1

從文件dir_50.txt讀入

實際參加測試的人數是:1024

人均被測次數是:2.7

 參考答案:

 1 picd = {}
 2 numd = {}
 3 fi = open("dir_50.txt",'r')
 4 for l in fi:
 5     l=l.replace('\n','').split('_')##    print(l[1])
 6     if l[0] != '' :
 7         lkey,lvalue = l[1][:-4],eval(l[0])
 8         lval = []
 9         for v in lvalue:
10             if v != '0':
11                 lval.append(v)
12         if lval:
13             lv= ','.join(lval)
14             print("{}:{}".format( lkey,lv))
15             picd[lkey] = lv
16 
17 fi.close()
18 idd = {}
19 for key in picd:
20     ids = picd[key].split(',')
21     for num in ids:
22         idd[num] = idd.get(num,0) +1
23             #print(num,idd[num])
24 s = 0
25 for key in idd:
26     s += int(idd[key])
27     # print("{}:{}".format(key, idd[key]))
28 count = len(idd)
29 print("實際參加測試的人數是:",count)
30 print("人均被測次數是:{:.1f}".format(s/count))
View Code

要點:

1. 這是一個實際問題,解決問題的方法有實際的推廣意義。問題的關鍵是要完成數據提取,然后才是分析統計

2. 文件的讀寫,打開關閉是基礎

3. 讀入文件要進行字符串的處理,按行,分割成列表

3. 數據提取:先取得文件里的有效內容,轉換成列表,利用列表的切片,提取出照片編號和學號,放到字典picd里

4. 第二步數據分析,需要先從字典里把學號提取出來,為了便於統計每個學號被測的次數,再建一個字典idd

5.  idd字典的鍵是學號,所以字典的len就是參加測試的人數

6. 為了計算平均測試次數,需要累計每個學號被測的次數,最后除以參加測試人數就得到結果

 

野生程序員一枚,有錯誤的地方希望各位大佬指正!

歡迎在評論區發表您自己的意見和看法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM