这是我的代码,我需要计算每个学生的平均分数,但这部分代码是不正确的。这是我需要修复的明星部分
while choice == 'av'.lower():
if schClass == '1':
schClass = open("scores1.txt", 'r')
li = open("scores1.txt", 'r')
data = li.read().splitlines()
for li in data:
name = li.split(":")[0]
score = li.split(":")[1]
**if name not in diction1:
diction1[name] = score
elif name in diction1:
diction1[name] = int(score) + diction1[name]**
答案 0 :(得分:0)
文件是什么样的?
A: 10
B: 10
A: 20
B: 12
或
A: 10 20
B: 10 12
此解决方案适用于两种格式。
首先,建立一个包含所有分数的列表:
all_scores = {}
while choice == 'av':
if schClass == '1':
with open("scores1.txt", 'r') as f:
for line in f:
name, scores = li.split(':', 1)
name_scores = all_scores.setdefault(name, [])
for score in scores.split():
name_scores.append(int(score))
然后计算平均值(转换为浮点数以获得精确平均值):
averages = {name: float(sum(scores)) / len(scores)
for name, scores in all_scores.iteritems()}
答案 1 :(得分:0)
你的问题不清楚;换句话说, 是什么意思 向字典键添加多个整数?这部分令人困惑,因为你的代码
diction1[name] = int(score) + diction1[name]**
似乎暗示您想要将字符串(score
)添加到整数(int(score)
),这是不可能的。如果要在列表中并排添加它们,那么,如果得分为' 4'结果为['4', 4]
,那么您所要做的就是更改最后一个这几行。
if name not in diction1:
diction1[name] = [score, int(score)]
此外,eumiro对您的代码 的其他更改是很好的建议 ,因此如果您不确定,请记住这些并阅读文档它是如何运作的。
答案 2 :(得分:-1)
让diction1
持有list。
if name not in diction1:
diction1[name] = [score]
else:
diction1[name].append(int(score))