计算机二级python真题



【计算机二级Python】综合题目-LMLPHP


一、简单应用题——字符串统计

从键盘输入一个中文字符串变量 s,内部包含中文逗号和句号。 去除字符串 s 中的中文逗号和句号字符之后,计算字符串 s中的中文字符个数;用jieba分词后,计算分词后的中文词语的个数。

示例1:

代码:

import jieba
s = input() # 请输入一个中文字符串,包含逗号和句号
s = s.replace(",","").replace("。","")
num1 = len(s)
wordlist = jieba.lcut(s)
num2 = len(wordlist)

for word in wordlist:
    print(word,end="/ ")
print("\n中文词语数为{}。".format(num2))
print("中文字符数为{}。".format(num1))

二、综合应用题——人脸识别测试数据分析

一个人脸识别研究小组对若干名学生做了人脸识别的测试,将测试结果写入到一个文件 dir_50.txt 中,每行是一张照片的识别结果+ "_照片编号” + "jpg"的字符串组合,示例如下:

[‘1709020621’, ‘θ’]_116.jpg
[‘1709020621’]_115.jpg
[‘1770603107’, ‘1770603105’, ‘θ’, ‘θ’]_1273.jpg

其中,识别结果是一个列表形式的字符串,方括号中是识别出的学生学号字符串,如果识别出了照片中白个人,就会包含多个学号字符串;如果检测到了一个人脸但没有识别出学号,则以字符串"0’表示;测过程中,一个学生可能被抓拍到多张照片中,所以学生的学号会出现在多行信息中。

使用字典和列表进行数据分析,获取实际参加测试的学生人数和人均被检测次数。

(1)读入dir_50.txt文件的内容,处理每一行信息。将其中的学号内容以列表形式保存,丢掉"0’的串;照片编号作为字典的关键字,学号列表作为字典的值。转换后示例如下:

(2)将该字典中的学号提取出来,构造另一个字典,以学号作为字典的关键字,累计学号出现的次数,将累计值作为字典的值。格式示例如下:

(3)累计字典中关键字的个数,即为实际参加测试的学生人数;累加每个关键字对应的值,即为所有学号测试次数;所有学号测试次数与实际测试人数之比,即为人均被测次数。将实际参加测试人数和人均被测次数显示输出在屏幕上。

示例1:

代码:

picd = {}
fi = open("dir_50.txt",'r')
for l in fi:
    l = l.strip()
    if len(l):
        l=l.split('_')
        lkey,lvalue = l[1][:-4],eval(l[0])
        lval = []
        for v in lvalue:
            if v != '0':
                lval.append(v)
        # print(lval, lkey)
        picd[lkey] = lval
        
fi.close()

idd = {}

for key in picd:
    for num in picd[key]:
        idd[num] = idd.get(num,0) +1
    # print(num,idd[num])

s = sum(idd.values())
count = len(idd)
print("实际参加测试的人数是:{}".format(count))
print("人均被测次数是:{:.1f}".format(s/count))
05-13 20:55