2016-03-30 6 views
0

Also mache ich ein Programm, das einen Satz als Index aller eindeutigen Wörter im Satz umschreibt (zB der Satz "quick brown fox brown fox" wäre) umgeschrieben als "12323"). Hier ist, was ich bis jetzt habe;Den Index des Subjekts einer For-Schleife in Python anhängen

sentence=input("please input your sentence") 
sentence=sentence.split(" ") 
unique=[] 
positions=[] 
print(sentence) 
for i in sentence: 
    if i in (unique): 
     print(" the item " + i + " has been repeated") 
     ind = i.index(i) 
     positions.append(ind) 
    else: 
     unique.append(i) 
print(unique) 
print(positions) 

Ich möchte den Index „i“ erhalten und es in die Liste „Positionen“ anhängen, aber wenn ich den obigen Code mit dem Satz „quick brown fox brown fox“ laufen bekomme ich diese Ausgabe für " Positionen ";

[0, 0] 

Die Ausgabe, die ich will, würde eher so aussehen;

[2, 3] 

Es scheint so ein einfaches Problem, aber für das Leben von mir kann ich es nicht herausfinden. Die eingebaute "enumerate" -Funktion passt nicht zu dem Problem, da sie es so macht, dass "i" nie in "unique" gefunden wird und daher "positions" leer wäre.

+0

Sie müssen die integrierte Methode mit den entsprechenden Parametern aufrufen, um den Index des gewünschten eindeutigen Worts zu erhalten. Überprüfen Sie diesen [string index] (https://docs.python.org/2/library/string.html#string.index) – formatkaka

Antwort

1

Ändern i.index(i)sentence.index(i) Fixes Code:

sentence="quick brown fox brown fox" #input("please input your sentence") 
sentence=sentence.split(" ") 
unique=[] 
positions=[] 
print(sentence) 
for i in sentence: 
    if i in (unique): 
     print(" the item " + i + " has been repeated") 
     ind = sentence.index(i) 
     positions.append(ind) 
    else: 
     unique.append(i) 
print(unique) 
print(positions) 

Beachten Sie, dass der Ausgang [1,2] anstelle des gewünschten [2,3] wegen der Python-Konvention von Start Arrays von 0. Wenn Sie wollen [2,3] als Antwort Ihr einfach positions = positions + 1

0

okay Leute, vielen dank für alle Ihre Beiträge einstellen können, aber ich habe eine unglaublich einfache Lösung gefunden:

sentence = input("Please input your sentence: ") 
sentence = sentence.slpit(" ") 

for i in sentence: 
    print(sentence.index(i)+1) 

Der Ausgang für den Satz "quick brown fox brown fox" zu sein:

1 
2 
3 
2 
3 

Welche genau das, was ich brauchte.

Verwandte Themen