2010-12-09 64 views
-1

我需要一些幫助,請看看編輯2 這是霍夫曼代碼:的Python,LEN函數

def printHuffTree(huffTree, prefix = ''): 
    if len(huffTree) == 2: 
     print huffTree[1], prefix 

exampleData = [ 
    (0.124167 , 'e') 
] 


if __name__ == '__main__': 
    huffTree = makeHuffTree(exampleData) 
    printHuffTree(huffTree) 

輸出爲:

e 00 
t 01 
a 10 
i 11 

我需要一些功能或任何其可以統計這個數字;例如,如果

e 00 

我要統計有多少數字是在這裏:2 (0 and 0)

使輸出我需要:

e 00 2 
t 01 2 
a 10 2 
i 11 2 
+3

你忘了「家庭作業」標籤嗎? – 2010-12-09 17:44:23

回答

2

的代碼替換的,如果一部分。編輯2:

使用你的數據在exampleData如果c是乘以每個常量,則:

result = sum(c*i[0] for i in exampleData)

我還沒有理解你的問題的其餘部分。

4

當我明白你的問題,你需要添加len(prefix)到您的最終print

def printHuffTree(huffTree, prefix = ''): 
    if len(huffTree) == 2: 
     print huffTree[1], prefix, len(prefix) 

更新回答新問題

def printHuffTree(huffTree, prefix = '', s=0): 
    if len(huffTree) == 2: 
     print huffTree[1], prefix, len(prefix) 
     return len(prefix)*huffTree[0] 

    else: 
     s+= printHuffTree(huffTree[1], prefix + '0') 
     s+= printHuffTree(huffTree[2], prefix + '1') 
     return s 

你需要測試它

+0

是的工作!但我怎麼能現在調用這個數字,我需要乘以這2和0.124167(來自exampleData,爲e)。例如:(2 * 0.124167 + 2 * 0.0969225 + 2 * 0.0820011 + 2 * 0.0768052 = ???) – thaking 2010-12-09 17:47:17

+0

@thaking`len`返回一個整數,所以你可以乘以它:`length = LEN(前綴);打印huffTree [1],前綴,長度,長度* 0.124167` – khachik 2010-12-09 17:49:16

0

我想你已經回答了你自己的問題?只需將print huffTree[1], prefix更改爲print huffTree[1], prefix, len(prefix)即可。

0

if len(huffTree) == 2: 
     print huffTree[1], prefix, len(prefix)