3

我有如下条件字符串,

condition1 = "((2=2) or (3=1)) and (1=1)"
condition2 = "((2=3) or (1=1)) and (4=5)"

以上两个条件分别给了我输出 True 和 False。

更多解释:

条件 1 工作,

if ((2==2) or (3==1)) and (1==1):
      Return True
else:
      Return False

条件 1 的输出:真

条件2工作,

if ((2==3) or (1==1)) and (4==5):
      Return True
else:
      Return False

条件2的输出:真

更新 :

对不起朋友,

我有条件字符串,如上面的条件1和条件2。

当我将条件解析为字符串并且该函数像 if - else 一样执行并返回布尔值时,我想创建函数

请帮忙...

谢谢钦坦

4

4 回答 4

3

警告:使用eval具有潜在危险,您永远不应评估不受信任的输入(例如任何类型的用户输入)。

In [1]: condition1 = "((2=2) or (3=1)) and (1=1)"
   ...: condition2 = "((2=3) or (1=1)) and (4=5)"
   ...: 

In [2]: eval(condition1.replace('=','=='))
Out[2]: True

In [3]: eval(condition2.replace('=','=='))
Out[3]: False
于 2013-01-30T09:10:12.660 回答
2

如果您询问如何评估条件并让 python 为您提供 True 或 False 输出,请查看 python 中的 eval() 函数。

于 2013-01-30T09:07:47.940 回答
1

没有“评估”的解决方案

def condition(a,b,c):  
    if (((a[0]==a[1]) or (b[0]==b[1])) and (c[0]==c[1])):  
       return True  
    else:  
      return False

print condition((2,2),(3,1),(1,1)) # 返回 True
print condition((2,3),(1,1),(4,5)) # 返回 False

于 2013-01-30T09:53:33.793 回答
1

在 python 中,用于比较的运算符是==.

无论哪种方式,如果这不能解决您的问题,您应该更清楚地说明我们应该为您提供哪些帮助。

更新:您正在寻找评估代表 Python 表达式的字符串的函数是eval().

于 2013-01-30T08:58:44.930 回答