2010-12-09 22 views
-1

ich etwas Hilfe benötigen, bitte AT EDIT LOOK 2 Dieser Code von Huffman ist:Python, Len-Funktion

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

exampleData = [ 
    (0.124167 , 'e') 
] 


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

Ausgabe lautet:

e 00 
t 01 
a 10 
i 11 

ich eine Funktion oder etwas brauchen die kann diese Zahlen zählen; zum Beispiel, wenn

e 00 

brauche ich, wie viele Zahlen zu zählen ist hier: 2 (0 and 0)

so ausgegeben, was ich brauche:

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

Haben Sie ein "Hausaufgaben" -Tag vergessen? –

Antwort

2

Für bearbeiten 2:

Ihre Daten in exampleData verwenden und wenn c ist die Konstante jeweils dann zu multiplizieren:

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

Ich verstehe immer noch nicht den Rest Ihrer Frage.

+0

@thaking: Ich habe gemerkt, dass das fürchterlich falsch ist, sorry. Das ist, was du willst! –

+0

Nun, ich weiß das, aber ich weiß nicht, wie man Daten für jede Anzahl von "len (Präfix)" und dann erste und nächste "Nummer" in "exampleData" summiert (c * i für i in Daten) – thaking

+0

Neil, danke für Hilfe; Ich möchte sagen, dass c nicht konstant ist; c ist die Nummer von 0 und 1, in einigen Fällen, wenn es mehr Eingaben gibt, wie (0124167, 'e'), (0.0969225, 't'), (0.0820011, 'a'), (0.0768052, 'i ') ...., es könnte 1 oder 2 oder 3 oder 4 sein ..., also muss ich diese Zahl von "len (prefix)" "packen" und dann mit exampleData multiplizieren, aber c ist nicht konstant! – thaking

4

Wie ich verstehe Ihre Frage, müssen Sie len(prefix) hinzufügen Ihr endgültiges print:

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

Aktualisieren, um die neue Frage

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 

Sie beantworten müssen, um es testen

+0

Ja, arbeite! Aber wie kann ich jetzt diese Zahlen nennen, die ich 2 und 0,124167 multiplizieren muss (aus exampleData, für e). Ich brauche das für jedes Zeichen, zum Beispiel: (2 * 0.124167 + 2 * 0.0969225 + 2 * 0.0820011 + 2 * 0.0768052 = ???) – thaking

+0

@thaking 'len' gibt eine ganze Zahl zurück, so dass Sie es multiplizieren können:' length = len (Präfix); drucke huffTree [1], prefix, length, length * 0.124167' – khachik

+0

naja ich brauche das um diese summe automatisch zu berechnen, schau dir edit2 an, VIELEN dank für HILFE! – thaking

0

Ich glaube, Sie Ihre eigene Frage beantwortet haben ?! Ändern Sie einfach print huffTree[1], prefix zu print huffTree[1], prefix, len(prefix).

0

Ersetzen Sie das, wenn ein Teil des Codes mit

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