期末测验: 课程水平综合测验 (第10周)

期末测验: 课程水平综合测验 (第10周)

文章目录

  • 期末测验: 课程水平综合测验 (第10周)
      • 1.无空隙回声输出
      • 2.文件关键行数
      • 3.字典翻转输出
      • 4.《沉默的羔羊》之最多单词

这是python123官网上联合MOOC的Python程序设计(第10期)答案

1.无空隙回声输出

期末测验: 课程水平综合测验 (第10周)_第1张图片
基础题,读取输入后把空格去掉即可

s=input()
s=s.replace(' ','')
print(s)

2.文件关键行数

期末测验: 课程水平综合测验 (第10周)_第2张图片
题目要求统计不重复的行,而集合中的元素正好拥有不重复的特性,由此想到使用集合进行存取,能存进集合的行一定不重复,最后统计集合元素个数即可。

s=set()
num=0
f=open('latex.log','r')
lines=f.readlines()
for line in lines:
    if(line not in s):
        s.add(line)
        num+=1
print('共{}关键行'.format(num))

参考答案写得更加简洁明了

f = open("latex.log")
ls = f.readlines()
s = set(ls)
print("共{}关键行".format(len(s)))

3.字典翻转输出

期末测验: 课程水平综合测验 (第10周)_第3张图片
使用 try-except 语句输出错误信息
方法一:建一个空字典,按 value:key 的模式将读入的数据填入字典,再将字典输出

s = input()
try:
    d = eval(s)
    e = {}
    for k in d:
        e[d[k]] = k
    print(e)
except:
    print("输入错误")

方法二:使用 zip 函数,按照 value:key 的模式创建字典,输出该字典即可

zip函数:接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

s=input()
try:
    s=eval(s)
    dic=dict(zip(s.values(),s.keys()))
    print(dic)
except:
    print("输入错误")

如果想深入探究 zip 和 dict 的应用,请参考这篇博客 zip和dict详解

4.《沉默的羔羊》之最多单词

期末测验: 课程水平综合测验 (第10周)_第4张图片
先打开文件,从文件中读入整个文件内容,使用 j i e b a jieba jieba 库中的 l c u t lcut lcut 方法,将文件内容进行精确切分(输出的分词可以完整且不多余地组成原始文本),将分词中长度大于等于2的分词加入到新建立的字典中。使用 items() 方法将遍历字典中的键值对并转换为 list 列表。调用 list.sort() 排序函数,进行倒序排序,使用lambda 函数对 value 进行排序(x[0]是key,x[1]是value),列表中的第一个元素就是排序后的最大单词,输出即可。

import jieba

f=open('沉默的羔羊.txt','r',encoding='utf-8')
sp=f.read()
words=jieba.lcut(sp)
lis={}
for word in words:
    if(len(word)>=2):
        lis[word]=lis.get(word,0)+1
count=list(lis.items())
count.sort(key=lambda x:x[1],reverse=True)
print(count[0][0])

当然,字典转换为列表的语句同样可以用 zip 函数来实现。
原语句:

count=list(lis.items())

zip语句:

count=list(zip(lis.keys(),lis.values()))

你可能感兴趣的:(Python语言程序设计)