python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词
1. 无空隙回声输出
描述
获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出。
输入输出示例
输入 | 输出 | |
---|---|---|
示例 1 | Alice + Bob |
Alice+Bob |
题解
s = input()
print(s.replace(" ", "")) #利用s中replace的方法把空格去掉
2. 文件关键行数
描述
关键行指一个文件中包含的不重复行。关键行数指一个文件中包含的不重复行的数量。
统计附件文件中与关键行的数量。
输入输出示例
此处仅示例输出格式。
输入 | 输出 | |
---|---|---|
示例 1 | `` | 共99关键行 |
题解
with open('latex.log','r',encoding='utf-8') as f: #打开文件
rows_set = set(f.readlines()) # 去除重复行就想到set去重
print('共{}关键行'.format(len(rows_set))) # format标准化输出 len直接取set的长度
3. 字典翻转输出
描述
读入一个字典类型的字符串,反转其中键值对输出。
即,读入字典key : value模式,输出value : key模式。
输入格式
用户输入的字典格式的字符串,如果输入不正确,提示:输入错误。
输出格式
给定字典d,按照print(d)方式输出
输入输出示例
输入 | 输出 | |
---|---|---|
示例 1 | {"a": 1, "b": 2} |
{1: 'a', 2: 'b'} |
题解
a = input()
try: # 因为题目要求有输入错误时的输出 就考虑到异常处理
a = eval(a)
print(dict(zip(a.values(), a.keys()))) # 直接反向输出
# 这里有两个函数 zip() dict() 见下注释
except:
print('输入错误') # 异常抛出
注 :
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
dict() 函数用于创建一个字典。
4. 《沉默的羔羊》之最多单词
描述
附件是《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于2且最多的单词。
如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词。
输入格式
文件
输出格式
字符串
输入输出示例
仅提供一个输出示范样例。
输入 | 输出 | |
---|---|---|
示例 1 | 无 |
羔羊 |
题解
import jieba
with open('沉默的羔羊.txt','r',encoding='utf-8')as f: # 打开文件
txt = f.read() # 读取为txt
words = jieba.lcut(txt) # 利用jieba库的lcut分词
counts={} # 创建字典
for word in words: # 逐个遍历
if len(word) == 1: # 若是当前词语只出现一次 跳过
continue
else:
counts[word]=counts.get(word,0)+1 # 此时词语出现次数累加
list = list(counts.items()) # 字典中items()方法见下
# 反向排列 key值为字典的[1]索引 = value
list.sort(key=lambda x:x[1],reverse=True)
print(list[0][0]) # 输出第一
Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。