If statement 将if-elif-else条件结构简化为单个if-else
如果这是一个“常规”程序,这对我来说不会是一个问题,但是我正在处理程序合成,我必须有一个尽可能紧凑的代码 考虑下面的伪代码:If statement 将if-elif-else条件结构简化为单个if-else,if-statement,boolean-logic,boolean-expression,boolean-operations,truthtable,If Statement,Boolean Logic,Boolean Expression,Boolean Operations,Truthtable,如果这是一个“常规”程序,这对我来说不会是一个问题,但是我正在处理程序合成,我必须有一个尽可能紧凑的代码 考虑下面的伪代码: if A: return 'n' elif B: return 'y' else: if C: return 'n' else: return 'y' A、B和C是布尔条件(在我的实际问题中返回布尔值的函数-它们的实现并不重要)。我需要将整个if-elif-else-if-else结构压缩为单个if-els
if A:
return 'n'
elif B:
return 'y'
else:
if C:
return 'n'
else:
return 'y'
A
、B
和C
是布尔条件(在我的实际问题中返回布尔值的函数-它们的实现并不重要)。我需要将整个if-elif-else-if-else
结构压缩为单个if-else
结构
我得到的最接近的结果是:
if A or C:
return 'n'
else:
return 'y'
但是,在单个测试用例中,a=False
,B=True
,C=True
,它失败:它返回'n'
,而不是'y'
正确的真值表如下所示,以供参考
|-------|-------|-------|----------|
| A | B | C | Result |
|-------|-------|-------|----------|
| T | T | T | n |
|-------|-------|-------|----------|
| T | T | F | n |
|-------|-------|-------|----------|
| T | F | T | n |
|-------|-------|-------|----------|
| T | F | F | n |
|-------|-------|-------|----------|
| F | T | T | y |
|-------|-------|-------|----------|
| F | T | F | y |
|-------|-------|-------|----------|
| F | F | T | n |
|-------|-------|-------|----------|
| F | F | F | y |
|-------|-------|-------|----------|
如果A或(C而非B):
返回'n'
其他:
返回“y”
从逻辑表开始,以另一种方式使用布尔属性:
是否返回B(A或C)'y':'n'
。仅供参考:如果您有表格。我转换了T=1
,F=0
,y=1
,n=0
-选择一个包含布尔条件数量的表格,表达您希望输出的内容(1
、0
、或x
for note matter),就可以得到一个最小化的表单。