[英]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次或多次。
可能公式的示例:
变量的值应以二进制形式给出: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.