计算机二级(Python)真题讲解每日一题:《传感器 两问》
类型:Python 组合数据类型《传感器 两问》
描述:
下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,文件名称为“sensor.txt”,其内容示例如下:
2016/5/31 0:05, vawe1on1,1,1
2016/5/31 0:20, earpa001,1,1
2016/5/31 2:26, earpa001,1,6
...(略)
第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层,第四列是传感器所在的位置区域编号。
问题一 (10分):在右侧模板中修改代码,读入sensor.txt文件中的数据,提取出传感器编号为earpa001的所有数据,将结果输出保存到“earpa001.txt”文件。输出文件格式要求:原数据文件中的每行纪录写入新文件中,行尾无空格,无空行。
参考格式如下:
2016/5/31 7:11, earpa001,2,4
2016/5/31 8:02, earpa001,3,4
2016/5/31 9:22, earpa001,3,4
...(略)
代码示例:(有不会的问题可以联系我o( ̄︶ ̄)o)
fi=open("sensor.txt","r",encoding="utf-8")
fo=open("earpa001.txt","w")
for line in fi:
ls=line.strip("\n").split(",")
if ls[1]==" earpa001":
fo.write('{},{},{},{}\n'.format(ls[0],ls[1],ls[2],ls[3]))
fi.close()
问题二 (10分):在右侧模板中修改代码,读入“earpa001.txt”文件中的数据,统计earpa001对应的职员在各楼层和区域出现的次数,保存到“earpa001_count.txt”文件,每一条纪录一行,位置信息和出现的次数之间用英文半角逗号隔开,行尾无空格无空行。参考格式如下。
1-1,5
1-4,3
...(略)
含义如下:
第1行“1-1,5”中1-1表示1楼1号区域,5表示出现5次;
第2行“1-4,3”中1-4表示1楼4号区域,3表示出现3次;
代码示例:
fi=open("earpa001.txt","r")
fo=open("earpa001_count.txt","w")
d = {}
for line in fi:
ls=line.strip("\n").split(",")
m=ls[2]+"-"+ls[3]
d[m]=d.get(m,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 该语句用于排序
for i in range (len(ls)):
fo.write('{},{}\n'.format(ls[i][0],ls[i][1]))
