我需要打印一些东西,只有当布尔变量设置为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。
我错过了什么?
当前回答
你可以这样写一个内联三元运算符:
sure = True
# inline operator
is_true = 'yes' if sure else 'no'
# print the outcome
print(is_true)
其他回答
试试这个。这可能对你有帮助
a=100
b=True
if b:
print a
因为2.5你可以使用C 's ' ' ?"三元条件运算符,语法为:
[on_true] if [expression] else [on_false]
所以你的例子很好,但你必须简单地添加其他,比如:
print a if b else ''
'else'语句是强制的。你可以这样做:
>>> b = True
>>> a = 1 if b else None
>>> a
1
>>> b = False
>>> a = 1 if b else None
>>> a
>>>
编辑:
或者,根据你的需要,你可以尝试:
>>> if b: print(a)
对于你的情况,这是有效的:
a = b or 0
编辑:这是如何工作的?
在问题中
b = True
所以评估
b or 0
结果
True
它被赋值给a。
如果b == False?, b或0将求值为第二个操作数0,该操作数将赋值给a。
嗯,你可以用列表理解来做。如果你有一个真正的范围,这才有意义。但它确实做到了:
print([a for i in range(0,1) if b])
或者只用这两个变量:
print([a for a in range(a,a+1) if b])