-1

eval() は次のような場合に非常に便利です。

x = 3
y = 2
myformula = "x + y"
print eval(myformula)
>>> 5

しかし、変数の名前と値をハードコードするのではなく、辞書を使用したい場合はどうすればよいでしょうか?

mydict = {'x':3, 'y':2, 'z':5}
myformula = "x + y + z"
print eval(myformula)
>>> 10
or,
mydict = {'a':100, 'b':10, 'c':1}
myformula = "(a * b) - c"
print eval(myformula)
>>> 999

変数を変数に割り当てる方法を調べましたが、他の答えを私の問題に適用できませんでした。myformula 文字列についても、その表記法を維持したいと考えています。どんな助けでも大歓迎です。

ありがとう。

ポール
シカゴ、イリノイ州

4

1 に答える 1

5

これが の 2 番目と 3 番目の引数の目的evalです (ドキュメントを参照してください)。

>>> d = {'x':3, 'y':2, 'z':5}
>>> eval("x + y + z", d)
    10

eval任意のユーザー入力を使用することは安全ではないことに注意してください(考えてくださいrm -Rf /)。避けてください。

于 2013-03-01T07:44:12.890 に答える