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 に答える