将上述代码改成输出 对于每一个逻辑表达式,输出其对应的真值表即可。相对于任务一,输出的最右边增加了一列,包含了表达式和它的各个值。
时间: 2024-03-14 16:47:22 浏览: 46
prg.zip_C ,DICOM_ct改成PRg格式_dicom_prg图像文件
好的,以下是修改后的 Python 3 代码:
```python
import itertools
def extract_variables(expr):
"""
从表达式中提取所有逻辑变量
"""
variables = set()
for char in expr:
if char.islower():
variables.add(char)
return sorted(list(variables))
def evaluate(expr, variables):
"""
计算表达式的值
"""
expr = expr.replace('(', '').replace(')', '')
for variable in variables:
expr = expr.replace(variable, str(int(variable in variables)))
return eval(expr)
def main():
while True:
try:
expr = input().strip()
except:
break
# 提取所有逻辑变量
variables = extract_variables(expr)
# 输出表头
headers = variables + [expr]
print(' '.join(headers))
# 输出逻辑变量值的所有组合情况
for combination in itertools.product([0, 1], repeat=len(variables)):
values = dict(zip(variables, combination))
result = evaluate(expr, values)
row = combination + (result,)
print(' '.join([str(value) for value in row]))
if __name__ == '__main__':
main()
```
相对于之前的实现,修改了以下部分:
1. 在主函数中,读入一行表达式并去除首尾空格后,删除了输出所有词的部分。
2. 输出表头时,将表达式加入表头。
3. 对于每个逻辑变量值的组合,将其和表达式的值组成一个元组,并输出。
阅读全文