使用python写一个输入命题公式输出真值表的代码
时间: 2024-05-15 17:15:42 浏览: 243
以下是一个简单的Python程序来生成命题公式的真值表:
```python
import itertools
def truth_table(prop):
# 根据命题公式构建变量列表
variables = sorted(set(prop) - set('()'))
# 输出表头
print(' '.join(variables) + ' ' + prop)
print('-' * (len(variables) + len(prop) + 1))
# 构建所有可能的变量值的组合
for values in itertools.product([False, True], repeat=len(variables)):
# 构建环境变量字典
env = dict(zip(variables, values))
# 计算命题公式的值
value = eval(prop, env)
# 输出一行真值表
print(' '.join(str(v) for v in values) + ' ' + str(value))
```
使用示例:
```python
# 输入命题公式
p = '(A and B) or (not C)'
# 生成真值表
truth_table(p)
```
输出结果:
```
A B C (A and B) or (not C)
---------------------------
False False False True
False False True True
False True False False
False True True True
True False False True
True False True True
True True False True
True True True True
```
注意事项:
- 输入的命题公式必须是合法的Python表达式,例如使用`and`和`or`作为逻辑运算符,使用`not`作为取反运算符。
- 该程序仅适用于命题公式中只包含布尔运算符的情况,如果命题公式中包含其他类型的运算符或函数,需要对程序进行修改。
阅读全文