是否有人能够帮助我尝试将其设置为循环或者代码不长,我一直在尝试并尝试失败:/
from collections import defaultdict
scores = defaultdict(list)
def alpha():
with open('Class X.txt', 'r') as f:
for line in f.readlines():
student, score = line.split(':')
scores[student].append(int(score))
for student, scorelist in sorted(scores.items()):
print("%s : %d" % (student, max(scorelist)))
def beta():
with open('Class Y.txt', 'r') as f:
for line in f.readlines():
student, score = line.split(':')
scores[student].append(int(score))
for student, scorelist in sorted(scores.items()):
print("%s : %d" % (student, max(scorelist)))
def charlie():
with open('Class Z.txt', 'r') as f:
for line in f.readlines():
student, score = line.split(':')
scores[student].append(int(score))
for student, scorelist in sorted(scores.items()):
print("%s : %d" % (student, max(scorelist)))
答案 0 :(得分:0)
class Scores(object):
def get_scores(file_name):
scores = defaultdict(list)
with open(filename, 'r') as f:
for line in f:
student, score = line.split(':')
scores[student].append(int(score))
return sorted(scores.items())
def alpha():
for student, scorelist in self.get_scores('Class X.txt')):
print("%s : %d" % (student, max(scorelist)))
def beta():
for student, scorelist in self.get_scores('Class Y.txt')):
print("%s : %d" % (student, max(scorelist)))
def charlie():
for student, scorelist in self.get_scores('Class Z.txt')):
print("%s : %d" % (student, max(scorelist)))
答案 1 :(得分:0)
from collections import defaultdict
scores = defaultdict(list)
def read_scores(scorefile):
with open(scorefile, 'r') as f:
for line in f.readlines():
student, score = line.split(':')
scores[student].append(int(score))
for student, scorelist in sorted(scores.items()):
print("%s : %d" % (student, max(scorelist)))
for scorefile in ['Class X.txt', 'Class Y.txt', 'Class Z.txt']:
read_scores(scorefile)
基本上,我将您的alpha
beta
charlie
个函数更改为单个函数:read_scores()
。
read_scores()
作为参数scorefile
,在这种情况下只是您要阅读的文本文件的名称...例如:Class Z.txt
然后我们在列表['Class X.txt', 'Class Y.txt', 'Class Z.txt']
上创建一个循环,并将每个循环传递给这个新函数。
答案 2 :(得分:0)
import os
my_folder = 'path/to/your/folder'
if os.path.isdir(my_folder):
my_files = [file for file in os.listdir(my_folder) if file.endswith('.txt')]
def alpha(filename):
with open(filename, 'r') as f:
for line in f.readlines():
student, score = line.split(':')
scores[student].append(int(score))
for student, scorelist in sorted(scores.items()):
print("%s : %d" % (student, max(scorelist)))
for each_file in my_files:
alpha(each_file)