计算机二级python真题
一、简单应用题——字符串统计
从键盘输入一个中文字符串变量 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))