作业程序题
一、文本的平均列数
题目描述:打印输出附件文件的平均列数,计算方法如下:
(1)有效行指包含至少一个字符的行,不计算空行;
(2)每行的列数为其有效字符数;
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
t = open("latex.log",encoding='utf-8')
l=0
c=0
for line in t:
line = line.strip("\n")
if line=="":
continue
l+=1
c+=len(line)
print(round(c/l))
注意点:①Python3.8版本中round()函数五舍六入。
②每一行中都有换行字符“\n”,先去掉换行字符再判断是否为空行。
二、CSV格式清洗与转换
题目描述:附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列;
(2)每行数据倒序排列;
(3)使用分号(;)代替逗号(,)分割数据,无空格;
按照上述要求转换后将数据输出。
输入 | 输出 | |
示例 |
1,2,3 4,5,6 7,8,9 |
9;8;7 6;5;4 3;2;1 |
f=open("data.csv")
line=f.readlines()
line.reverse()
for i in line:
i=i.replace('\n','')
a=i.split(",")
a.reverse()
print(";".join(a))
练习程序题
一、
文件行数
描述:打印输出附件文件的有效行数,注意:空行不计算为有效行数。
这个题目比较容易这里直接给出代码。
t = open("latex.log","rt",encoding='utf-8')
s=0
for i in t:
i=i.replace("\n","")
if i=="":
continue
s+=1
print("共{}行".format(s))
二、文件字符分布
描述:统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。
同时请输出文件一共包含的字符数量。
注意输出格式,各元素之间用英文逗号(,)分隔。
答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。
解题思路:
①遍历文件中的每一个字符
②判断小写字母
③输出格式控制
对于我来说,其中第三点是最难想到的!
t = open("latex.log","rt",encoding='utf-8')
t=t.read()
s=0
t=list(t)
counts ={}
for i in t:
if i<='z' and i>='a':
counts[i]=counts.get(i,0)+1
s+=1
print("共{}字符".format(s),end="")
for i in range(97,123):
print(",{}:{}".format(chr(i),counts[chr(i)]),end="")
第一点:用for in 语句遍历文件
第二点:字符之间的大小比较,判断小写字母
第三点:字典存储小写字母及其个数(文本词频统计里面提到过)
第四点:for in range(97,123)控制输出97是a的Unicode,122是z的Unicode。
三、文件独特行数
描述:统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。
f = open("latex.log")
ls = f.readlines()
s = set(ls)
for i in s:
ls.remove(i)
t = set(ls)
print("共{}独特行".format(len(s)-len(t)))
这个题目比较有意思!
代码解释:一个文件内容为2,2,3,3,4,执行s=set(ls)操作之后,得到
独特元素个数+非独特元素个数
,只剩下2,3,4,现在从文件中剔除s中出现的元素
(
这里只剔除出现在s中的元素一遍
)
,
此时文件中所有的独特元素被剔除,
因此对文件元素再执行set()操作,之后执行len()操作,得到
非独特元素的个数,
和上面的(独特元素个数+非独特元素个数)相减,即为
独特元素的个数
。
以上是对单个字符的举例解释,此题类比到行即可。
四、CSV格式列变换
描述:附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。
输入输出示例:这是一个格式示例,不是正确结果。
输入 | 输出 | |
示例 |
1,2,3,4 a,b,c,d |
4,3,2,1 d,c,b,a |
f=open("data.csv")
line=f.readlines()
for i in line:
i=i.replace('\n','')
a=i.split(",")
a.reverse()
print(",".join(a))
此题和作业题第二题相似,此处不再赘述。
五、CSV格式数据清洗
描述:附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
(1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割;
(2)清洗后打印输出。
输入输出示例:这是一个格式示例,不是正确结果。
输入 | 输出 | |
示例 |
(在文件中) 1, 2, 3, 4, 5 ‘a’, ‘b’ , ‘c’ , ‘d’,’e’ |
1,2,3,4,5 ‘a’,’b’,’c’,’d’,’e’ |
f=open("data.csv")
line=f.readlines()
for i in line:
i=i.replace('\n','')
i=i.replace(" ",'')
a=i.split(",")
print(",".join(a))
与上题类似,不再展开解释。