我一直在乱用这段代码的时间超过了必要的时间。我根据个人的选择更改为更改字典条目的值。
while points <= 10:
print "You have " + str(points) + " points left.\n"
stats = {
"Strength": 0,
"Dexterity": 0,
"Constitution": 0,
"Intelligence": 0,
"Wisdom": 0,
"Charisma": 0
}
for i in sorted(stats):
print i + ": \t" + str(stats[i])
statInc = raw_input("\nWhere do you want to put your points? ").capitalize()
if statInc in stats:
points -= 1
stats[statInc] += 1
我开始使用 stats [statInc] 作为if / elif,按名称指定字符串。我无法更改值,但点数会相应减少。我知道这是因为我最初将积分设置为 10 。
在我的其他代码围绕字典及其价值观之前,我从来没有遇到过这个问题。但我从各个角度尝试解决这个问题,我觉得自己像个白痴。
答案 0 :(得分:1)
每次循环评估时,您都会重新实例化您的字典。将您的初始stats
声明移出您的循环(在它之前),这样这些值就不会连续重置。
请注意,您还要测试while points > 0
而不是points <= 10
,因为您从10开始递减而不是从0开始递增。你也可以只针对sum(stats.values())
测试你的最大分数值,以确保你获得当前的总和而不是使用计数器变量,尽管在这种情况下它并不重要。
答案 1 :(得分:1)
因为您在stats
循环中将{"Strength": 0,"Dexterity": 0,"Constitution": 0,"Intelligence": 0,"Wisdom": 0,"Charisma": 0}
设置为while
,所以没有任何变化。每次循环时,它都会重新创建stats
,使其看起来永远不会改变。
解决此问题的方法是在输入stats = {"Strength": 0,"Dexterity": 0,"Constitution": 0,"Intelligence": 0,"Wisdom": 0,"Charisma": 0}
循环之前放置while
行。