2017-05-03 4 views
1

Ich verstehe nicht, warum mein Code nicht funktioniert.Fehler in For-Schleife-Anweisung verstehen Python 3

Der Code ist:

def trans(old): 
    length = len(old) 
    new = [] 
    new = old 
    for i in range(0,length): 
     print(old[length-i-1]) 
    for i in range(0,length): 
     new[i] = old[length-i-1] 
     print("new:",new[i]," [i]:",i," old:",old[length-i-1]," length- 
     i-1:",length-i-1) 
    ihavenoideawhatimdoing = " ".join(new) 
    return new 

Anweisung:
1. def trans (alt): Input Satz in (old)
2. Länge (len): Nimm Anzahl der Elemente im Satz
3 . new = [] und new = old ist ein Behälter mit der gleichen Größe für das neue Wort zu machen
4. Erste for loop = Ich wollte die Wörter im ursprünglichen Satz rückwärts
sehen5. Mein Problem ist in der zweiten for Schleife. Sehen Sie sich die Ausgabe
6. Was kommt als nächste mit dem Problem ist, ich bin zu lösen, aber nicht auf das Problem, das ich habe

Output

Eingang Satz:

„mir bitte diese lösen“

Ich habe kein Etikett für den nächsten Satz von Wörtern, aber es soll sein:
alt (Länge 0-1) -> alt (5-0-1) -> alt (4): das
alt (3): lösen
alt (2): mich
alt (1): Hilfe
alt (0): bitte

Nun, was in der nächsten for Aussage bei iffy ist längen i-1 = 1, wo statt "Hilfe" zu sein, ist es "lösen."

Beide Codes sind bekannt, also bin ich fest, was sonst noch falsch sein könnte.

+0

'new = old' macht der Name' new' auf das gleiche Objekt zu beziehen, wie 'old'. Wenn Sie also den Inhalt von einem ändern, wird auch der andere geändert. – RemcoGerlich

+0

Es wird nicht nur der Inhalt von 'alt' in' neu' umgewandelt? Also wird * an * in 'neu' in 'alt' geändert? edit: gerade die doppelte Frage gesehen. Danke für die Hilfe ~ – Monxstar

+0

@Monxstar: '=' kopiert nie etwas, es macht nur den Namen auf der linken Seite beziehen sich auf den Wert auf der rechten Seite. Da beide sich auf dasselbe beziehen, ist eine Änderung mit beiden sichtbar (es wird aber immer nur ein Objekt geändert). 'new = list (old)' wie AChampion sagt, erstellt eine neue Liste mit dem Inhalt von 'old'. – RemcoGerlich

Antwort

0

verwenden:

def trans(old): 

    new = old.split(" ") 
    new_str = "" 
    for i in reversed(new): 
     new_str = new_str + " " + i 
    print new_str