我试着让它发挥作用:
mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1
但如果两个条件都是0
,它会返回False
,而应该评估为1
答案 0 :(得分:1)
似乎按预期工作:
options = {1:2}
mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1
mp
> 1
答案 1 :(得分:1)
我无法复制你的问题;以下测试表明在任何情况下都不会mp == 0
:
>>> def testing():
for safe, fast in [(True, True), (True, False), (False, True), (False, False)]:
options = []
if safe:
options.append('safe_mode')
if fast:
options.append('fast_mode')
mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1
print 'safe_mode' in options, 'fast_mode' in options, mp
>>> testing()
True True 2.5
True False 2.5
False True 0.5
False False 1
答案 2 :(得分:1)
WorksFormMe:
>>> def test(c1, c2):
... return 1 if c1 else 2 if c2 else 3
...
>>> test(False, False)
3
>>> test(False, True)
2
>>> test(True, False)
1
>>> test(True, True)
1