python错误需要多个值来解压缩

时间:2015-08-31 15:38:46

标签: python

我已经阅读了有关此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)

2 个答案:

答案 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) == 2a, b, c = llen(l) == 3等)时有效。

在这里,看起来line.split(' : ')为您提供了一个只包含一个值的列表,因此无法解压缩。

对于像fileName这样的字符串,解包将在字符级别进行。在这里,fileName肯定包含2个以上的字符(如果classChoice为空,则至少为".txt"),因此无效。在这里你应该得到ValueError: too many values to unpack