用python写一个代码输入一个公式输出主析取式
时间: 2024-10-24 19:12:47 浏览: 21
在Python中,处理布尔代数的主析取式通常涉及到逻辑运算符的组合。我们可以创建一个简单的函数来转换用户输入的公式,并将其表示为主析取式(AND、OR)。这里是一个简单的示例:
```python
def main_disjunctive_form(formula):
operators = {'&': 'and', '|': 'or'}
tokens = formula.split(' ')
def evaluate_binary_op(op1, op2):
if op1 == '0' or op2 == '0':
return '0'
elif op1 == '1' or op2 == '1':
return '1'
else:
raise ValueError("Invalid input for binary operation")
def evaluate_expression(tokens):
while len(tokens) > 1:
op = tokens.pop(0)
arg1 = tokens.pop(0)
arg2 = tokens.pop(0)
tokens.insert(0, operators[op] + '(' + arg1 + ', ' + arg2 + ')')
# 如果只剩下一个元素,它是原子操作(0 或 1)
if tokens[0].isdigit():
return tokens[0]
else:
raise ValueError("Invalid expression format")
try:
result = evaluate_expression(tokens)
return result
except ValueError as e:
print(f"Error: {e}")
# 用户输入公式
formula_input = input("请输入一个布尔表达式 (如 1 & 0 | 1): ")
print("主析取式:", main_disjunctive_form(formula_input))
```
这个脚本假设输入的是一个二进制的布尔表达式,用数字0代表False,数字1代表True,并支持基本的逻辑操作(& 和 |)。请注意,这只是一个基础的示例,对于复杂的公式和更深入的布尔逻辑,你可能需要引入专门的库来解析。
阅读全文