我正在使用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
答案 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
形式的条件表达式和之前的部分if
(true_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]