我需要打印一些东西,只有当布尔变量设置为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。

我错过了什么?


当前回答

'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=100
b=True

if b:
   print a

你可以使用:

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不变。

嗯,你可以用列表理解来做。如果你有一个真正的范围,这才有意义。但它确实做到了:

print([a for i in range(0,1) if b])

或者只用这两个变量:

print([a for a in range(a,a+1) if b])

你为什么不简单地写:

if b:
    print a
else:
    print 'b is false'