Python语法,方法名称前的点

Python语法,方法名称前的点,python,Python,我正在努力理解代码: x = 1 size = 16 for i in range(size): print((' ' * (size - i)) + bin(x)[2:] .replace('0', ' ').replace('1', ' *')) x ^= x << 1 第一个示例打印了以下内容: * * * * * *

我正在努力理解代码:

x = 1 
size = 16  
for i in range(size):
    print((' ' * (size - i)) + bin(x)[2:]
    .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1
第一个示例打印了以下内容:

                 *
                * *
               *   *
              * * * *
             *       *
            * *     * *
           *   *   *   *
          * * * * * * * *
         *               *
        * *             * *
       *   *           *   *
      * * * *         * * * *
     *       *       *       *
    * *     * *     * *     * *
   *   *   *   *   *   *   *   *
  * * * * * * * * * * * * * * * *
我原以为第二个会打印这个:

0
ONE
2
您的代码:

x = 1
size = 16
for i in range(size):
    print((' ' * (size - i)) + bin(x)[2:]
        .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1
通过引入一些变量更清楚:

x = 1
size = 16
for i in range(size):
    spaces = (' ' * (size - i))
    binary = bin(x)[2:]
    print(spaces + binary
        .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1

行开头的点不是错误的原因是您有一个未闭合的括号,Python正在下一行查找其余部分。

计算括号。.replace仍在打印中。请正确粘贴代码。在第一个示例中,replace应用于打印中的字符串,而第二个示例无效。这就是为什么将布局元素用作语法分隔符是个坏主意。
x = 1
size = 16
for i in range(size):
    spaces = (' ' * (size - i))
    binary = bin(x)[2:]
    print(spaces + binary
        .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1