第一题 文本的平均列数
描述
打印输出附件文件的平均列数,计算方法如下:
(1)有效行指包含至少一个字符的行,不计算空行;
(2)每行的列数为其有效字符数;
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
输入输出示例
仅给出输出格式示例,非正确答案。
输入 | 输出 |
---|---|
无 | 6123 |
解答代码
思路:用rows去累计非空行数,用columns去累计有效字符数(即每行的列数),然后计算columns/rows + 0.5再用int()方法即可实现四舍五入。
# 文本的平均列数
with open('latex.log') as f:
for line in f:
# 判断非空行
if not len(line) ==1 and line[-1] == '\n':
rows += 1
# 去掉最后一个换行符'/n'
columns += len(line) -1
print(int(columns/rows + 0.5))
第二题 CSV格式清洗与转换
描述
附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列;
(2)每行数据倒序排列;
(3)使用分号(;)代替逗号(,)分割数据,无空格;
按照上述要求转换后将数据输出。
输入输出示例
以下是一个格式示例,不是最终结
输入 | 输出 |
---|---|
(以下内容在文件中) | |
1;2;3 | 9;8;7 |
4;5;6 | 6;5;4 |
7;8;9 | 3;2;1 |
解答代码
思路:使用replace()或者strip()方法去掉每行最后的回车,再用replace去掉每行中的空格,用split()和join()方法实现字符串和列表的转换。
with open('data.csv', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 按行进行倒序排列
lines.reverse() # 原地转换
# lines = lines[::-1] # 利用切片进行倒序
for line in lines:
# 用分号(;)代替逗号(,)分割数据,无空格
line = line.strip('\n')
# line = line.replace('\n', '')
line = line.replace(' ', '')
# 每行数据倒序排列
t = line.split(',')
t.reverse() # 原地倒序
# t = t[::-1] # 切片倒序
# 输出转换后的数据
print(';'.join(t))
说明:题目来自北理嵩天老师【Python语言程序设计 (第8期)】课程,如有侵权,立删。
后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技
,扫描下方二维码或者搜索每日学一技
关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!