python123测验答案第七周_Python123第七周作业+练习题

  • Post author:
  • Post category:python


作业程序题

一、文本的平均列数

题目描述:打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(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))

参考链接:https://blog.csdn.net/weixin_44521703/article/details/91128714?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159667452619724835856936%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159667452619724835856936&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-2-91128714.first_rank_ecpm_v3_pc_rank_v2&utm_term=CSV%E6%A0%BC%E5%BC%8F%E6%B8%85%E6%B4%97%E4%B8%8E%E8%BD%AC%E6%8D%A2&spm=1018.2118.3001.4187

练习程序题

一、文件行数

描述:打印输出附件文件的有效行数,注意:空行不计算为有效行数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

这个题目比较容易这里直接给出代码。

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。

第四点参考链接:https://blog.csdn.net/weixin_43429677/article/details/107429749?biz_id=102&utm_term=%E6%96%87%E4%BB%B6%E5%AD%97%E7%AC%A6%E5%88%86%E5%B8%83python&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-107429749&spm=1018.2118.3001.4187

三、文件独特行数

描述:统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。

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))

与上题类似,不再展开解释。



版权声明:本文为weixin_36372014原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。