【发布时间】:2015-11-19 07:19:37
【问题描述】:
我有一段代码可以更新玩家的分数:
...
self.players[speaker.lower()] += speakerScore
for player in advisers:
print(player, self.players[player.lower()])
self.players[player.lower()] += adviserScore
print(player, self.players[player.lower()])
for person in liars:
self.players[player.lower()] += liarScore
print(list(self.players.items()))
...
for player in self.players.items():
print(player[0] + ": "+str(player[1]))
self.players 是一个包含player:score 的小写字典。以前的代码保证有所有玩家,advisers 和liars 有正确的玩家。这是我得到的输出:
a 0
a 7.694582912747661
[('a', 0.0), ('s', 15.389165825495322), ('l', 0)]
a: 0.0
s: 15.389165825495322
l: 0
作为参考,s 是演讲者,a 是唯一的顾问,l 是唯一的骗子。他们所有的分数都从 0 开始,而 7.694582912747661 是 a 应该收到的分数。 (b 也是正确的,l 应该收到 -7.694582912747661。是的,得分很奇怪。对不起。)我正在 IdleX 中编辑它,并在 IdleX 的 REPL 中对其进行测试。 (IdleX是IDLE的改进版,是一个Python编辑器和用Python自己写的REPL。)
为什么没有输入正确的分数?
【问题讨论】:
-
for person in liars: self.players[player.lower()] += liarScore- 确定不应该是person.lower()? -
@TessellatingHeckler,是的。呵呵。
标签: python debugging python-3.x dictionary python-idle