实验五
实验任务3
def round_1(a): """四舍五入""" b = a // 1 c = a * 10 - b * 10 if c < 5: return b else: return b + 1 with open("data3.txt", "r", encoding="utf-8") as f: data = f.read() data = data.split() data_ = ["{:18}".format(i) if i == "原始数据" else "{:20}".format(i) for i in data] c_data = ["四舍五入后数据"] for i in range(1, len(data)): data[i] = "{:.0f}".format(round_1(eval(data[i]))) c_data.append(str(data[i])) for i in range(len(data_)): data[i] = data_[i] + c_data[i] + "\n" with open("data3_processed.txt", 'w', encoding="utf-8") as f: f.writelines(data) data_.pop(0) print(f"原始数据:\n{[eval(i) for i in data_]}\n四舍五入后数据:\n{[eval(i) for i in c_data[1:]]}")
实验任务4
with open("data4.txt", 'r', encoding="utf-8") as f: data = f.read().split("\n") for i in range(1, len(data)): data[i] = data[i].split("\t") data1 = data[1:].copy() data1.sort(key=lambda x: (x[2], -int(x[3])), reverse=False) data[0] += "\n" for i in range(len(data1)): for j in range(len(data[i])): if j == 3: data1[i][j] += "\n" else: data1[i][j] += "t" data[i + 1] = "".join(data1[i]) with open("data4_processed.txt", "w+", encoding="utf-8") as f: f.writelines(data) data = f.read()
f.seek(0) print(data)
实验任务5
with open("data5.txt") as f: text = f.read() line_am = len(text.splitlines()) words_am = len(text.split()) space_am = text.count(" ") zf_am = len(list(text)) print(f"行数:{line_am}\n单词数:{words_am}\n空格数:{space_am}\n字符数:{zf_am}") line = text.splitlines() text_ = '' for i in range(len(line)): line[i] = f"{i + 1} " + line[i]+"\n" text_ += line[i] with open('data5_with_line.txt', 'w') as f: f.write(text_)
实验总结
1.with..as语句很好用,但open(),close()也有其好处,文件要和python文件放在一个目录,路径有三种表达方式\\..\\class_work.py;/../class_work.py;//..//class_work.py