我需要打印一些东西,只有当布尔变量设置为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。
我错过了什么?
我需要打印一些东西,只有当布尔变量设置为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 b:
print a
else:
print 'b is false'
其他回答
你可以这样写一个内联三元运算符:
sure = True
# inline operator
is_true = 'yes' if sure else 'no'
# print the outcome
print(is_true)
内联if-else表达式必须包含else子句,例如:
a = 1 if b else 0
如果你想让你的'a'变量值保持不变-使用旧的'a'值(否则仍然需要语法要求):
a = 1 if b else a
当b变为False时,这段代码保持a不变。
这可以通过字符串格式化来实现。它可以使用%符号以及.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 ""}')
对于你的情况,这是有效的:
a = b or 0
编辑:这是如何工作的?
在问题中
b = True
所以评估
b or 0
结果
True
它被赋值给a。
如果b == False?, b或0将求值为第二个操作数0,该操作数将赋值给a。
你只是把事情复杂化了。
if b:
print a