计算机二级python真题
一、简单应用题
将列表 ls=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
中的素数去除,并输出去除素数后列表ls的元素个数。
示例2:
输入:无
输出:“7”
代码:
def is_prime(n): #定义判断n是否是素数的函数
for i in range(2,n): #如果是,函数值为True
if n % i == 0:
return False #如果不是,函数值返回为False
return True
ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] #本题目主要针对的是没有重复数据的列表
for i in ls.copy(): #遍历ls中每一个元素,ls.copy()这是一个拷贝副本,保证删除ls中的元素后,不影响元素遍历。
if is_prime(i) == True: #如果i是素数
ls.remove(i) #使用remove方法,从列表ls中删除i
print(len(ls)) #输出去除素数后,ls的元素个数len(ls)
二、综合应用题
苏格拉底是古希腊著名的思想家、哲学家、教育家、公民陪审员。苏格拉底的部分名言被翻译为中文,其部分内容由 sgld.txt 给出。
读取文件,请过滤中文逗号、中文句号、中文冒号、中文引号,英文空格、换行符\n之后
对其中的内容进行中文分词,在屏幕上显示输出词语出现次数前5的词,用一个中文顿号、分割。
示例1:
输入:无
输出:“你、我、他、我们、他们、”
注意:这里的输出只是示例
代码:
import jieba #导入中文分词库,这是必考点
with open("sgld.txt","r",encoding ="utf-8")as f: #使用with语句以只读方式打开文件
lines = f.readlines() #按行读取文件构建lssgld列表
d = {} #定义空字典
for line in lines:
line = line.replace("\n","") #数据清洗:去掉每一行最后的换行符
for c in "。,:”“ ": #中文分词前,将中文逗号、中文句号、中文冒号、中文引号,英文空格替换为空字符
line = line.replace(c, "") #使用字符串函数replace将
wordlist = jieba.cut(line) #对每行进行中文分词
for word in wordlist:
d[word] = d.get(word,0) + 1 #构建字典
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse = True) #列表排序
for i in range(5):
print("{}".format(ls[i][0]),end = "、") #出现次数前5的词