我目前正在测试我的程序的第三阶段,并且在以下代码的测试中反复出现这些错误:
我试图将一些值读入字典并打印字典以显示每个用户的最后三个分数(我最初选择了4,但我改变了我的设计理念。)代码如下:
import collections
from collections import defaultdict
worker_scores = collections.defaultdict(lambda: collections.deque(maxlen=3))
import operator
with open('score_names.txt') as f:
for line in f:
worker,score = line.split(":")
worker_scores[worker].append(int(score))
for name in sorted(program_scores):
print(name," ".join(map(str,program_scores[worker])))
文本文件也显示如下:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
MichaelJordan:70
MichaelJordan:80
MichaelJordan:90
MichaelJordan:100
DavidSnowman:110
DavidSnowman:120
DavidSnowman:130
DavidSnowman:140
现在,如果文本文件只包含AdamJohnson,如图所示:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
然后IDLE正确打印:
AdamJohnson 40 50 60
但是当Michael Jordan和DavidSnowman存在时,我想让IDLE显示:
AdamJohnson 40 50 60
MichaelJordan 80 90 100
MichaelJordan 120 130 140
然而,出现了这个错误:
Traceback (most recent call last):
File "/Users/Ahmad/Desktop/TESTS/Task 3/Dictionary copy.py", line 8, in <module>
worker,score = line.split(":")
ValueError: need more than 1 value to unpack
如何解决此问题以确保在打印时在IDLE中获得我想要的结果?
谢谢,Delbert。
更新代码现在正常运行,但分数打印错误...请参阅此代码:
AdamJohnson 120 130 140
DavidSnowman 120 130 140
MichaelJordan 120 130 140
为什么会发生这种情况?
答案 0 :(得分:1)
当您在结尾处打印分数时,您需要通过变量worker
查找它们,而变量name
在循环中不会发生变化,而不是{{1}}。