2013-11-26 178 views
0

我需要有人幫助我解釋下面的代碼。 查看解決方案後,花了一些時間才發現數字實際上代表了字母數的次數。但是,python非常弱。Python:字母數字

那麼,有人可以用簡單的英語向我解釋字母數如何與數字表相關嗎?

line = 'abcdef' 
count = [3,4,7,1,2,5] 
index = 0 
while index < len(line): 
    print(count[index], end=' ') 
    for k in range(0,count[index]): 
    print(line[index],end='') 
    print() 
    index = index + 1 

OUTPUT

3 aaa 
4 bbbb 
7 ccccccc 
1 d 
2 ee 
5 fffff 
+1

當您遇到類似問題時,請嘗試在交互式可視化工具中運行它,如[this one](http://pythontutor.com/visualize.html#code=line+%3D+'abcdef'%0Acount+% 3D +%5B3,4,7,1,2,5%5D%0Aindex +%3D + 0%0Awhile +指數+%3C + LEN(線)%3A%0A ++打印(計數%5Bindex%5D,+端%3D '+')%0A ++爲+ K + +在範圍(0,計數%5Bindex%5D)%3A%0A ++++打印(行%5Bindex%5D,端%3D '')%0A ++打印()%0A ++指數+%3D +指數+%2B + 1&模式=顯示&累積=假heapPrimitives =假drawParentPointers =假textReferences =假showOnlyOutputs =假PY = 3&curInstr = 0)。 – abarnert

+0

謝謝,它有用。但如前所述,編程不是我的力量。 – Macrick

回答

3

環路生成0len(line) - 1之間的折射率,使用該索引二者上linecount。因此,count預計將是相同的長度。

要遵循這個通過:

  1. 只要indexlen(line)小,不斷循環。
  2. print count[index],後面有空格,不換行。
  3. 0count[index] - 1的循環。這將循環count[index]次。在此for循環中,打印line[index]沒有換行符,導致字符被打印count[index]次。
  4. 打印換行
  5. 遞增index

第一次迭代index0,它小於len(line)line[0]a,count[0]爲3,因此印刷後3,a印3次。

第二次迭代index1,它小於len(line)line[1]b,count[1]是4,因此在打印4之後,b被打印4次。

等,直到index6,此時while循環結束。

的代碼可以簡化爲:

for char, c in zip(line, count): 
    print(c, c * char) 
+0

for char,c in zip(line,count): - > zip函數是? print(c,c * char) - >我知道*是乘法,但究竟是它的表現。這是一個字符數? – Macrick

+0

@Macrick:將一個字符串乘以數字會導致重複的字符串。 ''a'* 3'是'aaa''。 –

1

讓我們通過它去一個迭代一次:

  • 第一次迭代:index是0,count[0]3line[0]'a'。所以我們打印3,然後打印'a' 3次
  • 第二迭代:index是1,count[1]4line[1]'b'。因此,我們打印4,然後打印'b' 4次

希望這足以說清楚發生了什麼。