提问人:ihavenoidea 提问时间:11/25/2020 更新时间:11/25/2020 访问量:152
将 if-elif-else-if-else 条件结构简化为单个 if-else
Simplify if-elif-else-if-else conditional structure into a single if-else
问:
如果这是一个“常规”程序,这对我来说不是问题,但是我正在使用程序合成,我必须有一个尽可能紧凑的代码。
考虑下面的伪代码:
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 |
|-------|-------|-------|----------|
答:
1赞
alaniv
11/25/2020
#1
如果 A 或 ( C 而不是 B): 返回 'n' 还: 返回 'y'
从逻辑表开始,使用布尔属性
上一个:python中的真值表?
下一个:如何判断真值表中是否有错误?
评论
return B or not(A or C) ? 'y' : 'n'
T=1
F=0
y=1
n=0
1
0
x