python 真值表
时间: 2024-05-25 13:09:07 浏览: 14
在Python中,有些值被视为False,有些值被视为True。这种将值转换为布尔值的过程称为“真值测试”。Python中的真值表如下:
| 值 | 真值 |
| --------- | -------- |
| None | False |
| False | False |
| 0 | False |
| 0.0 | False |
| '' | False |
| [] | False |
| () | False |
| {} | False |
| 其他非零值 | True |
| 其他非空值 | True |
以上表格中的值被视为False,其他所有值都被视为True。
相关问题
python真值表表达式树生成打印
生成表达式树可以使用栈和递归的方法,具体步骤如下:
1. 遍历表达式,将操作数和操作符分别压入栈中。
2. 当遇到操作符时,弹出栈顶的两个操作数,作为当前操作符的左右子节点,创建一个新的节点,并将其压入栈中。
3. 遍历完表达式后,栈中只剩下一个节点,即根节点,返回该节点即可。
以下是Python代码实现:
```python
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def build_expression_tree(expression):
stack = []
for char in expression:
if char == ' ':
continue
elif char.isdigit():
node = Node(int(char))
stack.append(node)
else:
right = stack.pop()
left = stack.pop()
node = Node(char)
node.left = left
node.right = right
stack.append(node)
return stack.pop()
def print_expression_tree(node, level=0):
if node is None:
return
print(' ' * level + str(node.value))
print_expression_tree(node.left, level+1)
print_expression_tree(node.right, level+1)
```
使用示例:
```python
expression = '1 and 0 or 1 xor 0'
root = build_expression_tree(expression)
print_expression_tree(root)
```
输出结果:
```
xor
or
and
1
0
1
0
```
python真值表求主析取范式
以下是Python实现真值表求主析取范式的代码:
```python
from itertools import product
def get_minterms(n, minterms):
"""
获取minterms对应的二进制数中1的个数为n的项
"""
return [i for i in range(2**n) if bin(i).count('1') == n and i in minterms]
def get_maxterms(n, maxterms):
"""
获取maxterms对应的二进制数中0的个数为n的项
"""
return [i for i in range(2**n) if bin(i).count('0') == n and i in maxterms]
def get_dontcares(n, dontcares):
"""
获取dontcares对应的项
"""
return [i for i in dontcares if i < 2**n]
def get_binary(n, minterms, maxterms, dontcares):
"""
获取二进制数对应的主析取范式
"""
minterms = get_minterms(n, minterms)
maxterms = get_maxterms(n, maxterms)
dontcares = get_dontcares(n, dontcares)
binary = ['-'*n]*len(minterms+maxterms+dontcares)
for i, term in enumerate(minterms+maxterms+dontcares):
binary[i] = bin(term)[2:].zfill(n)
return binary
def get_expression(n, minterms, maxterms, dontcares):
"""
获取主析取范式
"""
binary = get_binary(n, minterms, maxterms, dontcares)
expression = []
for term in binary:
temp = []
for i, char in enumerate(term):
if char == '0':
temp.append(chr(65+i)+"'")
elif char == '1':
temp.append(chr(65+i))
expression.append("".join(temp))
return " + ".join(expression)
def get_truth_table(n, minterms, maxterms, dontcares):
"""
获取真值表
"""
binary = get_binary(n, minterms, maxterms, dontcares)
truth_table = []
for term in binary:
temp = []
for char in term:
if char == '0':
temp.append(False)
elif char == '1':
temp.append(True)
else:
temp.append(None)
truth_table.append(temp)
return truth_table
# 示例
n = 3
minterms = [0, 1, 2, 3, 5, 6]
maxterms = [4, 7]
dontcares = [2]
truth_table = get_truth_table(n, minterms, maxterms, dontcares)
expression = get_expression(n, minterms, maxterms, dontcares)
print("真值表:")
for row in truth_table:
print(row)
print("主析取范式:")
print(expression)
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)