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),就可以得到一个最小化的表单。