2017-02-28 66 views
0

我想通过将字符串分配给变量和数字来评估一个公式。 在这个例子中,我想要输出5.Python:分配和评估字符串到数字

更多详细信息:我正在编写一个程序,用户可以在其中输入公式并在公式编号中指定这些字母(它保存在字典中) 。然后程序应该用给定的数字计算公式的值。 然后我的问题是'评估'的公式。请参阅以下代码中的[?]。

formula='a+b' 
a='a' 
b='b' 
dict1={} 
dict1[a]=3 
dict1[b]=2 
[?] 
print(eval(formula)) 

我用瓦尔(),只要[?]但现在我有一个问题重新定义我的变量(例如,用于改变到4,乏()[α] = 4时不改变任何东西,我仍然得到5)

vars()[a]=dict1[a] 
vars()[b]=dict1[b] 

那么是否有替代vars()来解决这个问题?

+1

你需要编辑的问题更加清晰。你想达到什么目的?为什么?此外,你不应该使用'dict'作为变量名称,因为它是一个python关键字。 –

+1

不是python关键字,而是内置的。如果它是一个关键字,它将是非法的语法(小挑逗,但你是对的!) –

+0

更改eval exec(“打印”+公式),但你绝不应该做这个 – abccd

回答

2

你可以给你的EVAL字典为全局变量的使用方法:

print(eval(formula, dict1))