我需要打印一些东西,只有当布尔变量设置为True。所以,在看完这个之后,我尝试了一个简单的例子:

>>> a = 100
>>> b = True
>>> print a if b
  File "<stdin>", line 1
    print a if b
             ^
SyntaxError: invalid syntax  

同样的,如果我写print a if b==True。

我错过了什么?


当前回答

你总是需要在内联if中使用else:

a = 1 if b else 0

但更简单的方法是a = int(b)

其他回答

你总是需要在内联if中使用else:

a = 1 if b else 0

但更简单的方法是a = int(b)

'else'语句是强制的。你可以这样做:

>>> b = True
>>> a = 1 if b else None
>>> a
1
>>> b = False
>>> a = 1 if b else None
>>> a
>>> 

编辑:

或者,根据你的需要,你可以尝试:

>>> if b: print(a)

你只是把事情复杂化了。

if b:
   print a

你可以这样写一个内联三元运算符:

sure = True

# inline operator
is_true = 'yes' if sure else 'no'

# print the outcome
print(is_true)

这可以通过字符串格式化来实现。它可以使用%符号以及.format()和f-strings(3.6新增)

print '%s' % (a if b else "")

or

print '{}'.format(a if b else "")

or

print(f'{a if b else ""}')