2016-12-20 6 views
-1

Ich versuche, Werte und Positionen von Buchstaben zurückzugeben. Die Ausführung als einfache for-Schleife funktioniert einwandfrei. Es war, als ich es in eine Funktion verwandelte, dass es anfing, wackelig auszusehen.Liste gibt zurück Keine, Wert

Hier ist es zusammen mit seinem Ausgang:

dict = {'a': 1, 'b': 2 ... 'z': 26} 

list1 = [] 
list2 = [] 

def plot(word): 
    counter = 0 
    for i in word: 
     y = dict.get(i) 
     list1.append(y) #keeps printing None for the first letters 
     counter += 1 
     x = counter 
     list2.append(x) 
    print list1 
    print list2 
    r = zip(list1, list2) 
    print r 

t = raw_input('Enter word: ') 
Enter word: Hello 

plot(t) 

Output: 
[None, None, 5, 12, 12, 15] 
[1, 2, 3, 4, 5] 
[(None, 1), (None, 2), (5, 3), (12, 4), (12, 5)] 
+2

Wenn 'dict.get (i)' 'None' ist, dann ist' i' kein Schlüssel in 'dict'. '' h'' ist drin, aber ist '' H''? Auch, * nennen Sie nicht Ihr eigenes Wörterbuch 'dict' *. – jonrsharpe

+0

Die Ausgabe, die ich suche, ist [(8, 1), (5, 2), (12, 3), (12, 4), (15, 5)] – Rajahfox

+0

Beachten Sie auch, dass list1 sechs Elemente hat, gerade obwohl 'Hallo' nur fünf Buchstaben hat. Sie verpassen also nur einen Buchstaben. Verwenden Sie die lower() -Methode für das Wort, um alle Buchstaben in Kleinbuchstaben zu schreiben. Stellen Sie dann sicher, dass sich vor dem Wort keine Leerzeichen befinden (sieht so aus, als hätte 'Hallo' ein Leerzeichen davor). –

Antwort

2

Ich denke, dass das Problem ist, dass Ihr versuchen, einen Großbuchstaben zuzuordnen. Ich würde einfach die for-Schleife ändern, um über den Kleinbuchstaben zu iterieren.

+0

Vielen Dank! Ich fand auch, dass es auch das Extra-Leerzeichen nach dem Doppelpunkt in raw_input ('Wort eingeben:') zählt. Als ich es entfernte, lief alles glatt. – Rajahfox

+0

Kein Problem! Würde es Ihnen etwas ausmachen, die akzeptierte Antwort zu markieren? – Navidad20

Verwandte Themen