from queue import LifoQueue def evaluate_expression(expressions) : val = LifoQueue() op = LifoQueue() for c in expressions: if c == '(' or c == '|' or c == '&' or c == '!': op.put(c) elif c == 'V' or c == 'F' or c == ')': b = None if c != ')': b = True if c == 'V' else False else: b = val.get() while not op.empty(): if op.queue[-1] == '!': b = not b op.get() elif op.queue[-1] == '|': pre = val.get() b = pre or b op.get() elif op.queue[-1] == '&': pre = val.get() b = pre and b op.get() val.put(b) ch = 'V' if val.get() else 'F' return ch while True: expressions = input() n=1 if not expressions: break else: q=evaluate_expression(expressions) print("Expression {}: {}".format(n, q)) n+=1
时间: 2024-01-18 20:02:12 浏览: 115
atomic_queue:C ++无锁队列
这段代码是用 Python 实现了一个逻辑表达式的求值器,可以计算由 V, F, !, &, |, (, ) 组成的逻辑表达式的值。使用 LifoQueue 作为栈来存储操作数和操作符,通过遍历表达式并依次计算得出结果。在代码最后的 while 循环中,程序会循环读取输入的表达式,并输出计算结果。每次循环会将计算结果和表达式编号一并输出。
阅读全文