前言:嵩天老师的《Python语言程序设计课程》被评为国家精品课程,在幕课上累计超过11万学员,里面的习题对初学者入门Python,提高编程实战能力很有帮助。因此,我想把自己学习这门课程作业分享出来,和大家一起学习交流
目录
文件行数
文件字符分布
文件独特行数
CSV格式列变换
CSV格式数据清洗
文本的平均列数
描述
输入输出示例
CSV格式清洗与转换
描述
输入输出示例
打印输出附件文件的有效行数,注意:空行不计算为有效行数。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共100行
附件 1: latex.log
解答
with open("latex.log",'r',encoding='utf-8') as f:
n=0
for line in f:
line = line.strip('\n') # 去除换行符,空行也会有一个换行符字符\n
if len(line)==0:
continue
n = n+1
print("共{}行".format(n))
统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。
同时请输出文件一共包含的字符数量。
注意输出格式,各元素之间用英文逗号(,)分隔。
答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共999字符,a:11,b:22,c:33,d:44,e:55
附件 1: latex.log
解答
with open("latex.log",'r',encoding='utf-8') as f:
character_count = 0
d = {}
for i in range(26):# 产生a-z26个字母的字典
d[chr(ord('a')+i)] = 0
for line in f:
for ch in line:# 对a-z进行计数
d[ch] = d.get(ch,0)+1
character_count += 1
print("共{}字符".format(character_count),end="")
for i in range(26):
if d[chr(ord('a')+i)] != 0: #去除a-z没有出现过对字母
print(",{}:{}".format(chr(ord('a')+i),d[chr(ord('a')+i)]),end="")
统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共99独特行
附件 1: latex.log
# 生成每一行即出现次数的字典,然后选出出现次数为1的行进行计数
with open("latex.log",'r',encoding='utf-8') as f:
line_count = 0
d = {}
for line in f:
d[line] = d.get(line,0)+1
line_count += 1
s = 0
for line in d:
if d[line]==1:
s=s+1
print("共{}独特行".format(s),end="")
附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。
输入输出格式:这是仅给出输出格式样例,不是结果。
输入示例
(以下是文件内容)
1,2,3,4
a,b,c,d
输出示例
4,3,2,1
d,c,b,a
附件 1: data.csv
with open("data.csv",'r',encoding='utf-8') as f:
for line in f:
line=line.strip('\n') # 去掉换行符
ls = line.split(",")
ls = ls[::-1] # 将ls中的元素逆序排列
print(",".join(ls))
附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
(1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割;
(2)清洗后打印输出。
输入输出格式:这是仅给出输出格式样例,不是结果。
输入示例
(在文件中)
1, 2, 3, 4, 5
'a', 'b' , 'c' , 'd','e'
输出示例
1,2,3,4,5
'a','b','c','d','e'
附件 1: data.csv
with open("data.csv",'r',encoding='utf-8') as f:
for line in f:
line=line.strip('\n') # 去掉换行符
line=line.replace(' ','') #去掉空格
print(line)
打印输出附件文件的平均列数,计算方法如下:
(1)有效行指包含至少一个字符的行,不计算空行;
(2)每行的列数为其有效字符数;
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
仅给出输出格式示例,非正确答案。
输入 | 输出 | |
示例 1 | |
|
附件 程序内如何读取附件?
附件 1: latex.log
lineSum=0
n=0
with open("latex.log",'r',encoding='utf-8') as f:
for line in f:
line = line.strip('\n') # 去除换行符
if len(line)==0:
continue
lineSum = lineSum + len(line)
n = n+1
print(int(lineSum/n))
附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列;
(2)每行数据倒序排列;
(3)使用分号(;)代替逗号(,)分割数据,无空格;
按照上述要求转换后将数据输出。
以下是一个格式示例,不是最终结果。
输入 | 输出 | |
示例1 | (以下内容在文件中) 1,2,3 4,5,6 7,8,9 |
9;8;7 6;5;4 3;2;1 |
附件 1: data.csv
ls=[]
with open("data.csv",'r',encoding='utf-8') as f:
for line in f:
line=line.replace("\n",'')
line=line.replace(" ",'')
ls.append(line.split(',')[::-1])
ls=ls[::-1]
for i in ls:
print(';'.join(i))