2017-12-18 99 views
-3

點我試圖理解代碼:Python語法,之前的方法名稱

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

如何replace前點被應用到上面的print語句?

這爲什麼會引發錯誤?

for i in range(3): 
    print(i) 
    .replace('1','ONE') 

第一個例子打印此:

    * 
       * * 
       * * 
       * * * * 
      *  * 
      * *  * * 
      * * * * 
      * * * * * * * * 
     *    * 
     * *    * * 
     * *   * * 
     * * * *   * * * * 
    *  *  *  * 
    * *  * *  * *  * * 
    * * * * * * * * 
    * * * * * * * * * * * * * * * * 

我期待的是,第二會打印:

0 
ONE 
2 
+5

計算括號。 ''replace'仍然*在*'print()'內。 – deceze

+0

請正確粘貼您的代碼。 –

+0

在第一個示例中,替換應用於打印內部的字符串,第二個示例無效 – SitiSchu

回答

-2

的打印方法不返回一個值,所以你不能鏈將方法替換到它上面。相反,你需要使用這個字符串。

因此正確的代碼將

for i in range(3): 
    print(str(i).replace('1','ONE')) 
+1

在Python中不返回任何內容並返回'None'是同樣的事情,你可以將一個方法鏈接到'None'並且不會得到語法錯誤(將在運行時得到'AttributeError')。 –

4

您的代碼:

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 

,在行的開始點原因:

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

通過引入一些變量更清晰是不是一個錯誤是你有一個unclosed括號和Python正在尋找其餘的部分下一行。

+1

@Bilkokuya修正了這個問題。感謝您指出。 –