繁体   English   中英

有没有办法用逻辑语句替换字符串(不是,和,或)

[英]Is there a way to replace a piece of string with a logical statement (not, and, or)

因此,我刚刚开始学习Python,我得到了一个分配任务,使该程序以命题演算公式以及X,Y和Z(真或假)的值作为输入。 然后,如果答案是对还是错,它应该写出来。 公式应仅包含3个运算:-(不),&(和),v(或)。 公式中的变量只能是X,Y,Z,并且所有变量都可以出现0次或多次。


可能公式的示例:

  • ÿ
  • - ( - (YvX)&Y)
  • --X(双负数)
  • -Z Z

变量的值应以二进制形式给出:010(X = f,Y = t,Z = f)。 对于变量的值,我这样做

value = input("Value: ")

X = value[0]
Y = value[1]
Z = value[2]

if X == "0":
    X = False
elif X = "1":
    X = True
else:
    print("False input")

if Y == "0":
    Y = False
elif Y = "1":
    Y = True
else:
    print("False input")

if Z == "0":
    Z = False
elif Z = "1":
    Z = True
else:
    print("False input")

可以肯定的是,有更好的方法可以做到这一点,但这仍然可行。 问题在于阅读公式。 我的想法是用not和or替换符号(-,&,v)。 像这样:

a = input()
print(a.replace("v", or))

但是您不能这样做,所以我不知道该怎么做。

您可以尝试以下方法:

input_string = "--X&Y"
output_string = []
for elem in input_string:
    if elem in ["-"]:
        elem = "not "
    elif elem in ["&"]:
        elem = " and "
    elif elem in "v":
        elem = "or "
    output_string.append(elem)
print ("".join(output_string))

请注意,替换的“或”,“与”和“非”是字符串,不是逻辑运算符。

您可以执行以下操作:

>>> def interpret(values, formula):
...     X, Y, Z=[int(i) for i in values]
...     newF=formula.replace('-', ' not ').replace('v', ' or ').replace('&', ' and ')
...     return eval(newF)
... 
>>> val = raw_input("Value: ")
Value: 011
>>> form = raw_input("Formule : ")
Formule : -(-(YvX)&Y)
>>> interpret(val, form)
True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM