fd = open('Class1.txt')
lines = [line.strip() for line in fd]
s = {}
for line in lines:
splitted = [i for i in line.split(',')]
key = splitted[0]
s[key] = [int(n) for n in splitted[1:]]
def average():
avg_mark = lambda name:sum(s[name])/len(s[name])
for i in sorted(s.keys(),key=avg_mark,reverse=True):
print (i,avg_mark(i),"\n")
average()
average()
average()
是的,所以我已经改变了代码,所以它只是平均值,但是当我运行它时它不停止任何人都可以帮助我。 感谢
我需要帮助缩短这段代码,因为它太长了。我还需要为其他三个类做这个,并且不希望它成为代码行,如果可以缩短则只是徘徊。
由于
答案 0 :(得分:0)
以下是我认为你之后的事情:
import csv
with open('Class1.txt') as fd:
s = {row[0]:[int(n) for n in row[1:]] for row in csv.reader(fd, delimiter=',')}
def average():
avg_mark = lambda name : sum(s[name])/len(s[name])
for name in sorted(s, key=avg_mark, reverse=True):
print(name, avg_mark(name)) # newline prints automatically
当然,实际上,由于average
内的average
号召唤,您将遇到maxrecursiondepth
个问题。因此,如果你真的想要代码来做这件事,你也可以这样做:
def f(): f()