思路:用join和split函数将这些字符换成布尔变量
再用eval函数计算表达式的结果
附py代码:
i=0
while True:
i+=1
try:
x=input()
a = ‘’.join(x.split())
a=”and”.join(a.split(“&”))
a=”not”.join(a.split(“!”))
a=”or”.join(a.split(“|”))
a=”True”.join(a.split(“V”))
a=”False”.join(a.split(“F”))
s=”“;S=”“
for e in a:
s+=e
if s==”True” or s==”or” or s==”and” or s==”False” or s==”)” or s==”not”:
S+=s
S+=” “
s=”“
if s==”(“:
S+=s
s=”“
result=eval(S)
if result==False:
print(“Expression %d: F”%i)
if result==True:
print(“Expression %d: V”%i)
except:
break
给所有一个字符一个字符读入的人的忠告:
最后一行后面没有’\n’!!!!!!!!!!!!
最后一行后面没有’\n’!!!!!!!!!!!!
最后一行后面没有’\n’!!!!!!!!!!!!
思路:
1. 遇到括号递归调用计算布尔值函数
2. 处理!运算符:可能出现在字母前、括号前或多次出现
附C++代码:
思路:用join和split函数将这些字符换成布尔变量
再用eval函数计算表达式的结果
附py代码:
i=0
while True:
i+=1
try:
x=input()
a = ‘’.join(x.split())
a=”and”.join(a.split(“&”))
a=”not”.join(a.split(“!”))
a=”or”.join(a.split(“|”))
a=”True”.join(a.split(“V”))
a=”False”.join(a.split(“F”))
s=”“;S=”“
for e in a:
s+=e
if s==”True” or s==”or” or s==”and” or s==”False” or s==”)” or s==”not”:
S+=s
S+=” “
s=”“
if s==”(“:
S+=s
s=”“
result=eval(S)
if result==False:
print(“Expression %d: F”%i)
if result==True:
print(“Expression %d: V”%i)
except:
break