实验五

实验任务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

posted @ 2022-05-10 23:35  杖卫  阅读(46)  评论(2编辑  收藏  举报