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

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


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

1.无空隙回声输出

101
基础题,读取输入后把空格去掉即可

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

2.文件关键行数

102
题目要求统计不重复的行,而集合中的元素正好拥有不重复的特性,由此想到使用集合进行存取,能存进集合的行一定不重复,最后统计集合元素个数即可。

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.字典翻转输出

103
使用 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.《沉默的羔羊》之最多单词

104
先打开文件,从文件中读入整个文件内容,使用 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()))

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值