如何使用python 2.7中的内联if else语句在单行中进行打印

时间:2013-10-29 18:48:56

标签: python if-statement inline

我正在使用python2.7。如果我在print语句中删除,,则以下代码有效。 但是会在不同的行中打印值。如果可能,我想在内联if-statement的同一行打印。

这就是我所拥有的:

def binary(x):

   for i in [128,64,32,16,8,4,2,1]:
      #if x&i: print 1,
      #else: print 0,
       print 1, if x&i else 0

binary(127)

抛出以下语法错误:

File "binary.py", line 6
    print 1, if x&i else 0
              ^
SyntaxError: invalid syntax

4 个答案:

答案 0 :(得分:2)

def binary(x):
   for i in [128,64,32,16,8,4,2,1]:
       print 1 if x&i else 0,

binary(127)

答案 1 :(得分:2)

将逗号放在结尾

print 1 if x&i else 0,

您正在使用true_expr if condition_expr else false_expr形式的条件表达式和之前的部分iftrue_expr)是该表达式的一部分。你正在打印那个表达的结果。

答案 2 :(得分:1)

正如其他答案所述,将逗号放在print行的 end 将解决您的问题。

但是,如果您使用format,则可以更轻松地实现所需目标:

>>> def binary(x):
...     return " ".join(format(n, "08b"))
...
>>> print binary(127)
0 1 1 1 1 1 1 1
>>>

此方法与您的功能完全相同,只是它更简洁高效。

答案 3 :(得分:0)

x = 127

>>> [1 if ele & x else 0 for ele in [128, 64, 32, 16, 8, 4, 2, 1]]
[0, 1, 1, 1, 1, 1, 1, 1]

你甚至可以使用,

x = 127

>>> [[0,1][bool(ele & x)] for ele in [128, 64, 32, 16, 8, 4, 2, 1]]
[0, 1, 1, 1, 1, 1, 1, 1]