【问题标题】:Get conditional string return value : True or False获取条件字符串返回值:True 或 False
【发布时间】:2013-01-30 08:56:04
【问题描述】:

我有如下条件字符串,

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

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

更多解释:

condition1 作为 ,

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

条件1的输出:真

condition2 作为 ,

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

条件 2 的输出:真

更新:

对不起,朋友们,

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

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

请帮忙...

谢谢 钦坦

【问题讨论】:

  • 那么这里的实际问题是什么?
  • 抱歉给您带来不便......请查看更新的问题并请帮助

标签: python


【解决方案1】:

警告:使用evalpotentially dangerous,您永远不应该评估不受信任的输入(例如任何类型的用户输入)。

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

【讨论】:

  • 强制“eval 有潜在危险”。但这是最简单的方法。
  • @chintu -- 欢迎您。请注意, eval 是“危险的”,您不应评估不受信任的输入,即任何类型的用户输入...
  • 感谢您告诉我 eval 函数的缺点
  • @downvoter -- 如果我的回答有问题,我想知道我可以改进什么。
【解决方案2】:

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

【讨论】:

  • 简单的eval(condition1.replace('=', '=='))eval(condition2.replace('=', '==')) :-)
  • @chintu 我更新了我的答案。 -- 顺便说一句,您更新问题中的条件字符串仍然使用= 而不是==
【解决方案3】:

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

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

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

【讨论】:

  • 感谢您的回复。但这不是我的问题,请查看更新的问题...再次感谢
  • @chintu 我更新了我的答案。 -- 顺便说一句,您更新问题中的条件字符串仍然使用 = 而不是 ==。
【解决方案4】:

没有'eval'的解决方案

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

打印条件((2,2),(3,1),(1,1)) # 返回真
print condition((2,3),(1,1),(4,5)) # 返回 False

【讨论】:

  • 感谢您的回复,但不是那样...我得到了答案。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2013-08-17
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多