0

我希望能够组合列出的数据字典项目的值(点池、力量、健康、智慧、敏捷)并确保它们的总和不超过 30 的值。我可以导出数据字典中的项目,但是我不确定如何将它们加在一起以确保它们的总和不超过 30 的数值,然后在执行操作之前对其进行测试。

variables=(attributes.values())
print(variables)
dict_values(['0', '30', '0', '0', '0'])
variables=items(attributes.values())

我想将字典值添加在一起并将它们分配给我将用作 while 条件的变量。谢谢

4

3 回答 3

1

我想你的意思是:

char_info = {'Pool': '5', 'Strength': '10', 'Health': '3', 'Wisdom': '1', 'Dexterity': '2'}
if sum(int(x) for x in char_info.values()) > 30:
    print 'Too many points!'
于 2012-12-10T05:21:25.257 回答
0
>>> variables=attributes.values()
>>> print(variables)
dict_values(['0', '30', '0', '0', '0'])
>>> print(sum(variables))
030000
>>> # Oops, you're adding strings; we want to convert them to ints...
>>> print(sum(int(variable) for variable in variables))
30
>>> if sum(int(variable) for variable in variables) > 30:
...     print('Cheater!')
... else:
...     print('OK')
OK

如果您不了解 sum 函数,可以通过以下方式显式编写它:

total = 0
for value in attributes.values():
    total += int(value)
if value > 30:
    …
于 2012-12-10T05:18:00.080 回答
0

我不完全确定我是否正确地解释了您;你应该让你的问题更准确,更清楚。

但是,我认为您要求的语句检查字典值的总和以查看它是否大于 30。如果是,请考虑以下问题:

dic = {'Key1':1,'Key2':5,'Key3':8}
vals = dic.values()
if sum(vals) > 30:
    # do something

如果您只检查某些键,那么看看这个:

dic = {'Key1':1,'Key2':5,'Key3':8}
vals = map(lambda x:x[1],filter(lambda x:x[0] in ['Key1','Key2'],dic.items()))
if sum(vals) > 30:
    # do something

请进一步澄清您的问题!

于 2012-12-10T05:18:07.047 回答