目录
传感器日志光照统计
文本字符分布
《白鹿原》词频统计
习题
本题目附件提供了一个传感器日志文件,为文本类型,共 1 千行,每行包含了日期、时间和 4 种传感器读数值。
其中,4 种传感器读数值分别是:温度、湿度、光照和电压。
在 Python123 中读取文件请假设题目对应文件在当前目录下,文件打开函数参考如下:
f=open("sensor-data-1k.txt", "r")
编写程序,统计日志反应的光照平均值,保留小数点后 2 位。
示例1:
输入:无
输出:"43.24"
注意:示例1 是一个输入输出示范样例,不是正确结果。
with open("sensor-data-1k.txt","r") as f:
sum, cnt = 0, 0
for line in f:
ls = line.split()
cnt += 1
sum += eval(ls[4])
print(f"{sum / cnt:.2f}")
分析附件 data.txt 文件的字符分布,即每个字符对应的数量。
按照 字符:数量 显示,每行一个结果,如果没有出现该字节则不显示输出,字符采用 Unicode 编码升序排列。
示例1:
输入:无
输出:"
a:1
b:2
c:3
"
注意:
with open('data.txt','r') as f:
d = {}
for line in f:
for s in line:
d[s] = d.get(s, 0) + 1
res = sorted(d)
for i in res:
print(i + ':' + str(d[i]))
附件是《白鹿原》原著内容,请读入内容,分词后输出长度大于 2 且最多的单词。
如果存在多个单词出现频率一致,请输出按照 Unicode 排序后最大的单词。
示例1:
输入:无
输出:"白鹿原"
注意:示例1 是一个输入输出示范样例,不是正确结果
import jieba
with open("白鹿原.txt","r",encoding='utf-8') as f:
words = jieba.lcut(f.read())
counts = {}
for word in words:
if len(word) >= 2:
counts[word] = counts.get(word, 0) + 1
print(list(max(counts.items(), key=lambda x: x[1]))[0])
1.文本的平均列数
打印输出附件文件latex.txt的平均列数,计算方法如下:
1)有效行指包含至少一个字符的行,不计算空行;
2)每行的列数为其有效字符数;
3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
with open('latex.log','r') as f:
cnt, s = 0, 0
for line in f.readlines():
if not len(line) == 1 and line[-1] == '\n':
cnt += 1
s += len(line) - 1
print(int(round(s / cnt, 0)))
2.图像文件压缩。使用PIL库对图片进行等比例压缩,无论压缩前文件大小如何,压缩后文件小于10KB
from PIL import Image
import os
img=Image.open("picture.jpg")
size=os.path.getsize("picture.jpg")/1024 #单位是B,装换为KB
width,height=img.size
while True:
if size>10:
width, height = round(width * 0.9), round(height * 0.9)
cimg = img.resize((int(width), int(height)), Image.Resampling.LANCZOS)
cimg.save("cpicture.jpg")
size = os.path.getsize("cpicture.jpg") / 1024
else:
break
pillow库中的resize()
resize(size, resample=image.BICUBIC, box=None, reducing_gap=None)
size:元组参数 (width,height),图片缩放后的尺寸
resample:可选参数,指图像重采样滤波器,可选的采样类型包括:
Image.NEAREST :低质量
Image.BILINEAR:双线性
Image.BICUBIC :三次样条插值(默认)
Image.ANTIALIAS:高质量
box:对指定图片区域进行缩放,box的参数值是长度为4的像素坐标元组,即 (左,上,右,下)
ps:被指定的区域必须在原图的范围内,如果超出范围就会报错。当不传该参数时,默认对整个原图进行缩放;
reducing_gap:可选参数,浮点参数值,用于优化图片的缩放效果,常用参数值有3.0和5.0