我通过网络以字符串格式获得以下条件:
"value1+value2>value3"
我从某些寄存器中获取value1,value2和value3
value1 = readRegister(100),
value2 = readRegister(200),
value3 = readRegister(300)
所以我通过读取寄存器值
创建了下面的dictonarytest_dict = { value1:120, value2: 200, value3: 500}
如果在开始时提到的条件为真,那么我必须执行某些操作。
正如我在启动条件时提到的那样是 string 格式,所以我需要从我创建的字典(即test_dict)中获取并获取条件中提到的字符串的值,然后需要执行条件中提到的arithematic操作。
我不确定如何解决这个问题。
答案 0 :(得分:0)
您可以使用eval
。
首先,确保输入字符串绝对值得信赖。如果恶意用户可以指定其内容,他们可以擦除您的硬盘并向您的母亲发送不礼貌的电子邮件。有关详细信息,请参阅Peter Wood的评论中的链接。
然后,调用eval
,将d
作为全局字典传递。
>>> d = {"value1": 120, "value2": 200, "value3": 500}
>>> s = "value1+value2>value3"
>>> eval(s, d)
False
>>> d = {"value1": 120, "value2": 200, "value3": 300}
>>> eval(s, d)
True
这假设你的字典有字符串文字作为键。你的问题并不清楚;我假设你忘了写引号。