2017-07-31 63 views
0

這是一段python代碼,我試圖找出如何計算並存儲在變量string_width中的值。這行代碼是什麼意思

string_width =len(" ".join(map(str,range(num,0,-1)))+" ".join(map(str,range(2,num+1)))) 

任何解釋都會有幫助。

+2

尖叫的意大利麪代碼「請重寫我!」 –

+0

嘗試打印出您不理解的部分,例如'print(「」.join(map(str,range(num,0,-1))))'。還有哪個python是這個?它不能同時爲2和3. –

+2

如果將語句分解爲兩個連接'「」.join(..)'並打印每個連接,則可能會注意到該模式。第一個連接從'num'向下計數到0(零),第二個連接計數從2上升到num,然後調用len長度函數。 – davedwards

回答

0

實際得到輸出的結果很大程度上取決於num等於什麼,但要理解這個特定的代碼行,您必須分解各個函數。

首先,內部有兩個使用map函數使用字符串創建的可迭代地圖。

第一個是從變量num倒數到0的所有數字,不包括在內。因此,如果num爲4,則此地圖中將包含4,3,2和1。

第二張地圖從2開始計數至num + 1,非包含。所以如果num是4,那麼在地圖中它將是2,3和4。

接下來,這兩個地圖都用空格連接,所以每個地圖都會變成一個在每個值之間都有空格的字符串。前面例子的第一張地圖是"4 3 2 1",第二張地圖是"2 3 4"。 +然後將這兩個字符串連接在一起,以便它們成爲單個字符串,這將來自我們的示例"4 3 2 12 3 4"

最後,len找到這個組合字符串的長度,並將該值保存到string_width,在我們的示例中該值爲12,因爲那是多少個字符(它計數空格)。