题目:
有一个文件名字叫:‘吃鸡排行.txt’打开之后看到如下:
大数据第一战队_落地成盒 23 35 44 90 70
大数据第二战队_跑毒 60 77 68 88 90
大数据第三战队_神打野 97 99 89 91 99
大数据第四战队_ 鱼塘局 85 90 98 89
先把以上四行存为单独一个txt文件;1. 通过读取txt文件,打印出来每个战队的名字和总分,例如
大数据第一战队_落地成盒262
大数据第二战队_跑毒383
……
……
2把上面4行内容,存为列表并且写入一个名叫winner.txt文件中
3让战队的成绩从高到低排列,然后放到新文档“winner_new.txt”。
提示:对于3,可能要用到re包,字典、sorted()\zip()\map()\re.findall()\re.compile()
那个re包我看了好久也看不懂,所以用了很笨的方法
下面就直接贴代码
# -*- coding = utf-8 -*-
"""
#@Time:2022年03月20日
#@Author:YuDai
#@File:吃鸡排名.py
#@Software : PyCharm
"""
# 用来计算列表中数字部分的和,因为队伍名字是字符串不能直接加
def sum_of_list(list):
sum = 0
for k in range(len(list)):
if list[k].isdigit():
sum+=int(list[k]) # 记得转换类型,列表里的那个数是str类型的
return sum
# 打开文件读取数据
# 记得改地址
file1 = open("这里是吃鸡排行。txt的地址", 'r', encoding='utf-8')
file_lines = file1.readlines()
file1.close()
j=0 # 循环变量
dict_scores = {} # 存放最后的队伍名称和分数
final_scores = [0, 0, 0, 0] # 各队伍最后的得分
group_names=[0, 0, 0, 0] # 各队伍的名字
# 获取数据
for i in file_lines:
data =i.split() # 根据空格分割数据 data[0]是队伍名字,后面是分数
group_names[j]=data[0] # 赋值给列表group_names
final_scores[j]=str(sum_of_list(data)) # 调用函数计算队伍分数
j+=1
# 将队伍名字和分数进行组合放进列表
for key in group_names:
dict_scores[key] = final_scores[group_names.index(key)]
# 啊,这个是一个sorted的用法,我也不清楚怎么搞得。
# 反正reverse默认是False 升序排列,反之Ture就是降序排列
# 那个dict_scores.items()是你要排序的对象
# key=lambda e: e[1]这个玩意是个匿名函数,具体啥意思我也不知道
dict_scores=dict(sorted(dict_scores.items(), key=lambda e: e[1], reverse=True))
# 生成一个新文件
# 要是没有目标文件的话会自己生成一个
# 记得改一下地址
winner_new = open('这里是新生成文件的地址', 'w', encoding='utf-8')
# 把字典的数据写入文件
for item in dict_scores.items():
winner_new.writelines(item)
winner_new.writelines('\n')
winner_new.close()