所以,我刚刚开始学习Python,并且我得到了一个赋值,用于创建一个程序,该程序采用命题演算公式和X,Y和Z(True或False)的值作为输入。然后如果答案是真或假,它应该写。公式应该只包含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,和,或替换符号( - ,&,v)。像这样:
a = input()
print(a.replace("v", or))
但是你不能这样做,所以我不知道该怎么做。
答案 0 :(得分:0)
你可以试试这个:
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))
请注意,被替换的“或”,“和”和“不是”是字符串,而不是逻辑运算符。
答案 1 :(得分:0)
您可以执行以下操作:
>>> 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