【问题标题】:how to print in single line with an inline if else statement in python 2.7如何在python 2.7中使用内联if else语句在单行中打印
【发布时间】:2013-10-29 18:48:56
【问题描述】:

我正在使用 python2.7。如果我在打印语句中删除,,则以下代码有效。 但这会在不同的行中打印值。如果可能的话,我想用内联 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

【问题讨论】:

    标签: python if-statement inline


    【解决方案1】:

    把逗号放在结尾

    print 1 if x&i else 0,
    

    您正在使用true_expr if condition_expr else false_expr 形式的条件表达式,而if (true_expr) 之前部分是该表达式的一部分。您正在打印该表达式的结果。

    【讨论】:

      【解决方案2】:
      def binary(x):
         for i in [128,64,32,16,8,4,2,1]:
             print 1 if x&i else 0,
      
      binary(127)
      

      【讨论】:

        【解决方案3】:

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

        但是,如果您使用format,则有一种更简单的方法可以实现您想要的:

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

        这个方法和你的函数做同样的事情,只是它更简洁和高效。

        【讨论】:

        • “08b”代表什么?
        • 它代表“8位二进制”。换句话说,二进制文件的长度为 8 个字符(如您所愿)。将0 放入其中使其在开始时填充 0,直到达到 8 个字符。没有它,输出将是"1 1 1 1 1 1 1"
        【解决方案4】:
        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]
        

        【讨论】:

          猜你喜欢
          • 2020-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-27
          • 1970-01-01
          • 1970-01-01
          • 2022-08-18
          • 1970-01-01
          相关资源
          最近更新 更多