我需要打印一些东西,只有当布尔变量设置为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。
我错过了什么?
当前回答
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语句写在一行上,尽管它可读性较差,而且确实没有理由避免两行变体。
其他回答
你为什么不简单地写:
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 b:
print a
因为2.5你可以使用C 's ' ' ?"三元条件运算符,语法为:
[on_true] if [expression] else [on_false]
所以你的例子很好,但你必须简单地添加其他,比如:
print a if b else ''
试试这个。这可能对你有帮助
a=100
b=True
if b:
print a