我需要打印一些东西,只有当布尔变量设置为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。
我错过了什么?
当前回答
你可以使用:
print (1==2 and "only if condition true" or "in case condition is false")
你还可以继续这样说:
print (1==2 and "aa" or ((2==3) and "bb" or "cc"))
现实世界的例子:
>>> print ("%d item%s found." % (count, (count!=1 and 's' or '')))
1 item found.
>>> count = 2
>>> print ("%d item%s found." % (count, (count!=1 and 's' or '')))
2 items found.
其他回答
内联if-else表达式必须包含else子句,例如:
a = 1 if b else 0
如果你想让你的'a'变量值保持不变-使用旧的'a'值(否则仍然需要语法要求):
a = 1 if b else a
当b变为False时,这段代码保持a不变。
因为2.5你可以使用C 's ' ' ?"三元条件运算符,语法为:
[on_true] if [expression] else [on_false]
所以你的例子很好,但你必须简单地添加其他,比如:
print a if b else ''
嗯,你可以用列表理解来做。如果你有一个真正的范围,这才有意义。但它确实做到了:
print([a for i in range(0,1) if b])
或者只用这两个变量:
print([a for a in range(a,a+1) if b])
试试这个。这可能对你有帮助
a=100
b=True
if b:
print a
你总是需要在内联if中使用else:
a = 1 if b else 0
但更简单的方法是a = int(b)