我已经阅读了有关此python错误的所有其他问题,并且没有人帮助我,我是python的初学者,真的需要帮助。我必须从一个文件中找到一些学生的平均结果,并且它会在第4和第7行解压缩错误超过一个值
fileName = classChoice + ".txt" # generate the name of the file to read
with open (fileName) as f:
for line in f.readlines():
userName,score= line.split(' : ')
scores[userName].append(int(score))
total=0
for (userName, score )in fileName:
total=total+score
average= total/len(fileName)
print("the average is ", average)
答案 0 :(得分:1)
您的代码中有两个问题。
userName,score= line.split(' : ')
如果该行不包含' : '
,则会失败。例如,带有'Foo: 12'
的行已经失败,因为冒号前没有空格。你最好只用冒号分割,然后从值中修剪空格:
userName, score = line.split(':')
scores[userName.strip()].append(int(score.strip()))
另一个问题是以下一行:
for (userName, score )in fileName:
fileName
是一个字符串,其中包含您之前打开并从中读取的文件的文件名。您可能想要做的是遍历字典scores
。请注意,您为每个用户收集了各个分数值,因此字典值实际上是分数列表。所以你需要再次遍历这些:
for userName, userScores in scores.items():
total = 0
for score in userScores:
total += score
average = total / len(userScores)
print("the average for", userName, "is", average)
答案 1 :(得分:0)
符号a, b = l
仅在len(l) == 2
(a, b, c = l
,len(l) == 3
等)时有效。
在这里,看起来line.split(' : ')
为您提供了一个只包含一个值的列表,因此无法解压缩。
对于像fileName
这样的字符串,解包将在字符级别进行。在这里,fileName
肯定包含2个以上的字符(如果classChoice为空,则至少为".txt"
),因此无效。在这里你应该得到ValueError: too many values to unpack
。