我需要打印一些东西,只有当布尔变量设置为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表达式必须包含else子句,例如:

a = 1 if b else 0

如果你想让你的'a'变量值保持不变-使用旧的'a'值(否则仍然需要语法要求):

a = 1 if b else a

当b变为False时,这段代码保持a不变。

其他回答

试试这个。这可能对你有帮助

a=100
b=True

if b:
   print a

Python没有尾随的if语句。

在Python中有两种if:

如果声明: If条件:语句 如果条件: 块 if表达式(在Python 2.5中引入) Expression_if_true if条件else expression_if_false

注意,print a和b = a都是语句。只有a部分是表达式。所以如果你写

print a if b else 0

它的意思是

print (a if b else 0)

同样,当你写作的时候

x = a if b else 0

它的意思是

x = (a if b else 0)

如果没有else子句,它会打印/赋值什么呢?打印作业还在那里。

注意,如果你不希望它出现在那里,你总是可以将常规的if语句写在一行上,尽管它可读性较差,而且确实没有理由避免两行变体。

对于你的情况,这是有效的:

a = b or 0

编辑:这是如何工作的?

在问题中

b = True

所以评估

b or 0

结果

True

它被赋值给a。

如果b == False?, b或0将求值为第二个操作数0,该操作数将赋值给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.

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

sure = True

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

# print the outcome
print(is_true)